spamd_socket support -- thanks to John Peacock
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@213 958fd67b-6ff1-0310-b445-bb7760255be9
This commit is contained in:
parent
cf47b58b7d
commit
b005a303b3
3
Changes
3
Changes
@ -1,5 +1,8 @@
|
|||||||
0.27
|
0.27
|
||||||
|
|
||||||
|
Support for unix sockets in the spamassassin plugin (requires SA
|
||||||
|
2.60 or higher). Thanks to John Peacock!
|
||||||
|
|
||||||
Modified the dnsbl plugin to better support both A and TXT records and
|
Modified the dnsbl plugin to better support both A and TXT records and
|
||||||
support all of the RBLSMTPD functionality. (Thanks to Mark Powell)
|
support all of the RBLSMTPD functionality. (Thanks to Mark Powell)
|
||||||
|
|
||||||
|
@ -44,12 +44,22 @@ might want to make another plugin that does this on a per user basis.
|
|||||||
|
|
||||||
The default is to never munge the subject based on the SpamAssassin score.
|
The default is to never munge the subject based on the SpamAssassin score.
|
||||||
|
|
||||||
|
=item spamd_socket [/path/to/socket]
|
||||||
|
|
||||||
|
Beginning with Mail::SpamAssassin 2.60, it is possible to use Unix
|
||||||
|
domain sockets for spamd. This is faster and more secure than using
|
||||||
|
a TCP connection.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
With both options the configuration line will look like the following
|
With both of the first options the configuration line will look like the following
|
||||||
|
|
||||||
spamasssasin reject_threshold 18 munge_subject_threshold 8
|
spamasssasin reject_threshold 18 munge_subject_threshold 8
|
||||||
|
|
||||||
|
=head1 TODO
|
||||||
|
|
||||||
|
Make the "subject munge string" configurable
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
|
|
||||||
@ -88,8 +98,18 @@ sub check_spam {
|
|||||||
my $paddr = sockaddr_in($port, $iaddr);
|
my $paddr = sockaddr_in($port, $iaddr);
|
||||||
|
|
||||||
my $proto = getprotobyname('tcp');
|
my $proto = getprotobyname('tcp');
|
||||||
|
if ( $self->{_args}->{spamd_socket} =~ /^([\w\/.]+)$/ ) { # connect to Unix Domain Socket
|
||||||
|
my $spamd_socket = $1;
|
||||||
|
|
||||||
|
socket(SPAMD, PF_UNIX, SOCK_STREAM, 0)
|
||||||
|
or $self->log(1, "Could not open socket: $!") and return (DECLINED);
|
||||||
|
|
||||||
|
$paddr = sockaddr_un($spamd_socket);
|
||||||
|
}
|
||||||
|
else {
|
||||||
socket(SPAMD, PF_INET, SOCK_STREAM, $proto)
|
socket(SPAMD, PF_INET, SOCK_STREAM, $proto)
|
||||||
or $self->log(1, "Could not open socket: $!") and return (DECLINED);
|
or $self->log(1, "Could not open socket: $!") and return (DECLINED);
|
||||||
|
}
|
||||||
|
|
||||||
connect(SPAMD, $paddr)
|
connect(SPAMD, $paddr)
|
||||||
or $self->log(1, "Could not connect to spamassassin daemon: $!") and return DECLINED;
|
or $self->log(1, "Could not connect to spamassassin daemon: $!") and return DECLINED;
|
||||||
@ -102,6 +122,9 @@ sub check_spam {
|
|||||||
print SPAMD "SYMBOLS SPAMC/1.0" . CRLF;
|
print SPAMD "SYMBOLS SPAMC/1.0" . CRLF;
|
||||||
# or CHECK or REPORT or SYMBOLS
|
# or CHECK or REPORT or SYMBOLS
|
||||||
|
|
||||||
|
print SPAMD "X-Envelope-From: ", $transaction->sender->format, CRLF
|
||||||
|
or warn "Could not print to spamd: $!";
|
||||||
|
|
||||||
print SPAMD join CRLF, split /\n/, $transaction->header->as_string
|
print SPAMD join CRLF, split /\n/, $transaction->header->as_string
|
||||||
or warn "Could not print to spamd: $!";
|
or warn "Could not print to spamd: $!";
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user