You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@spamassassin.apache.org by Sean Doherty <se...@copperfasten.com> on 2004/10/08 14:01:41 UTC

dccifd question

Hi,

Spamassassins DCC configuration option "use_dcc" specifies 
whether to use DCC or not. However, it appears that 
Spamassassin will perform a dcc check if dccifd is available 
(if the socket specified under dcc_dccifd_pathor exists) or 
use_dcc is set to 1. The same logic is in both 2.64 and 3.0. 
Can anyone explain the reasoning behind this? I would have 
thought that if use_dcc = 0, then that would be that and no 
dcc checks would be performed. 

sub check_dcc { 
  my ($self, $fulltext) = @_;
  my $have_dccifd = $self->is_dccifd_available();

  return 0 unless ($have_dccifd || $self->is_dcc_available());
  ...

If I comment don't specify dcc_dccifd_path and dcc_home in 
local.cf then no dcc checks will occur, so that workaround 
is fine. Likewise, if I stop the dccifd daemon.

This has caught me out before at a customer site, where 
DCC ports where blocked by their firewall. I set use_dcc to 
0, but didn't stop the dccifd daemon. This resulted in 
dcc_timeout delay for each check...

Why isn't use_dcc the overriding parameter. If it only 
controls DCCproc then the documentation should say this.

TIA,
		- Sean



Re: dccifd question

Posted by Matt Kettler <mk...@evi-inc.com>.
At 08:01 AM 10/8/2004, Sean Doherty wrote:
>Spamassassins DCC configuration option "use_dcc" specifies
>whether to use DCC or not. However, it appears that
>Spamassassin will perform a dcc check if dccifd is available
>(if the socket specified under dcc_dccifd_pathor exists) or
>use_dcc is set to 1. The same logic is in both 2.64 and 3.0.
>Can anyone explain the reasoning behind this? I would have
>thought that if use_dcc = 0, then that would be that and no
>dcc checks would be performed.
>
>sub check_dcc {
>   my ($self, $fulltext) = @_;
>   my $have_dccifd = $self->is_dccifd_available();
>
>   return 0 unless ($have_dccifd || $self->is_dcc_available());

That would indeed appear to be a bug, although I'd say the bug doesn't lay 
where you say.

In theory "is_dcc_available" really would be more accurately named 
"is_dccproc_available". It not only checks if DCC is available, but it 
checks that dccproc is installed.

Rather than using "is_dcc_available" as a shunt to avoid checking for 
dccifd I suspect a more proper thing would be for is_dccifd_available() to 
check for use_dcc as well, just like is_dcc_available() does, right after 
the check for local mode.

Something like this (for made against Dns.pm for SA 3.0, but the theory 
applies to 2.6x as well):

$diff -u Dns.pm.orig Dns.pm

--- Dns.pm.orig 2004-10-08 11:08:52.000000000 -0400
+++ Dns.pm      2004-10-08 11:09:09.000000000 -0400
@@ -583,6 +583,8 @@
      return 0;
    }

+  if (!$self->{conf}->{use_dcc}) { return 0; }
+
    my $dcchome = $self->{conf}->{dcc_home}        || '';
    my $dccifd  = $self->{conf}->{dcc_dccifd_path} || '';