Konstantin Boyandin wrote:
Greetings,

I've installed DPAM 3.8.0 to be called by Exim4. The configure command:

./configure --prefix=/usr/local/dspam-3.8.0 \
    --enable-daemon \
    --enable-clamav \
    --enable-syslog \
    --enable-homedir \
    --with-dspam-home-owner=exim \
    --with-dspam-group=mail \
    --with-delivery-agent=/usr/sbin/exim \
    --with-quarantine-agent=/usr/sbin/exim

The Exim routers:

dspam_router:
    no_verify
    check_local_user
    condition   = "${if and { \
        {!def:h_X-Spam-Flag:} \
        {!def:h_X-FILTER-DSPAM:} \
        {!eq {$received_protocol}{local}} \
        { <= {$message_size}{512k}} \
        }\
        {1}{0}}"
    headers_add  = "X-FILTER-DSPAM: by $primary_hostname on $tod_full"
    driver       = accept
    transport    = dspam_spamcheck

dspam_addspam_router:
    driver            = accept
    local_part_prefix = spam-
    transport         = dspam_addspam

dspam_falsepositive_router:
    driver            = accept
    local_part_prefix = nospam-
    transport         = dspam_falsepositive

The Exim transports:

dspam_spamcheck:
    driver = pipe
        command = "/usr/local/dspam-3.8.0/bin/dspam --debug --deliver=innocent,s
pam --user ${lc:$local_part} -f \
        '$sender_address' -- %u"
    home_directory = "/tmp"
    current_directory = "/tmp"
    user = exim
    group = mail
    log_output = true
    return_fail_output = true
    return_path_add = false
    message_prefix =
    message_suffix =

dspam_addspam:
    driver = pipe
    command = "/usr/local/dspam-3.8.0/bin/dspam --debug --class=spam --source=er
ror --user \
        ${lc:$local_part} -f '$sender_address' -- %u"
    home_directory = "/tmp"
    current_directory = "/tmp"
    user = exim
    group = mail
    log_output = true
    return_fail_output = true
    return_path_add = false
    message_prefix =
    message_suffix =

dspam_falsepositive:
    driver = pipe
    command = "/usr/local/dspam-3.8.0/bin/dspam --debug --class=innocent --sourc
e=error \
        --deliver=innocent,spam --user ${lc:$local_part}\
        -f '$sender_address' -- %u"
    home_directory = "/tmp"
    current_directory = "/tmp"
    user = exim
    group = mail
    log_output = true
    return_fail_output = true
    return_path_add = false
    message_prefix =
    message_suffix =

This is what I see in the maillog when a message is sent to :

Apr  2 08:37:25 dev dspam[11734]: Unable to create directory:
/home/user/.dspam: Permission denied
Apr  2 08:37:25 dev dspam[11734]: Unable to open file for reading:
/home/user/.dspam/user.lock: Permission denied
Apr  2 08:37:25 dev dspam[11734]: Unable to attach DSPAM context
Apr  2 08:37:25 dev dspam[11734]: process_message returned error -2.
delivering.

May I ask, what is requried to allow DSPAM to cerate the per-user
.dspam directories and all the required data in them?

Thanks.

All the best,

Konstantin


I think I explained this to you  in IRC, but here it goes.
You are using --enable-homedir, which requires that dspam be setuid root so that it has access to the users home directory. If you are running dspam as user 'mail' or 'dspam' etc... then dspam won't have permission to read/write to the users home directory.

In addition by using --enable-homedir you can't use the WebUI (which isn't required), unless you run the dspam.cgi as root, which is a security issue.

The alternative would be to omit --enable-homedir, in which case the opt-in & opt-out data will be stored in /usr/local/var/dspam/data/username (or $Home/data/username)

If you plan to have multiple domains then use --enable-domain-scale which places the opt-in & opt-out data in /usr/local/var/dspam/data/domain.tld/username

All of this information can be found in the README located here: http://dspam.nuclearelephant.com/text/README-3.6.7.txt

Good Luck.

-Jeff Harris

Reply via email to