Tags

, , , , , ,

Depois de alguns dias sofrendo para concretizar a instalação do Dspam, deixo aqui um pequeno tutorial com algumas dicas:

Instalando o Dspam

Faça download da ultima versão estável no endereço http://sourceforge.net/projects/dspam/

No meu caso, baixei a versão dspam-3.9.0.tar.gz e vou utilizar banco de dados postgreSQL e autenticar os usuários no Ldap, integrando o Dspam com o Expresso Livre.

Antes de começar o processo de compilação necessitamos instalar alguns pacotes:

Adicione o repositório EPELRepo:

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

Instale o seguintes pacotes:

yum install autoconf automake libtool libedit postgresql-devel openldap-devel

Executando o processo de configuração, compilação e instalação:

tar xvf dspam-3.9.0.tar.gz
cd dspam-3.9.0

./autogen.sh
./configure –enable-shared –enable-large-scale –enable-daemon –enable-clamav –with-dspam-home-owner=dspam –with-dspam-home-group=mail –enable-debug –enable-syslog –with-logdir=/var/log/dspam –enable-preferences-extension –with-storage-driver=pgsql_drv –with-pgsql-includes=/usr/include/pgsql –enable-virtual-users –enable-external-lookup

make && make install

Preparando o banco de dados:

su postgres
$ psql
CREATE USER dspam NOINHERIT;
ALTER USER dspam WITH PASSWORD ‘dspam’;
CREATE DATABASE dspam OWNER dspam;

Importando as estruturas iniciais do banco:

$ createlang plpgsql dspam

cd dspam-3.9.0/src/tools.pgsql_drv
psql dspam -U dspam < pgsql_objects.sql
psql dspam -U dspam < virtual_users.sql

Configurando o cron para fazer uma limpeza diária no banco de dados:

mkdir -p /usr/local/share/dspam
cp purge.sql /usr/local/share/dspam/

Adicione essa linha no /etc/crontab

00 0 * * *  postgres /usr/bin/psql dspam < /usr/local/share/dspam/purge.sql

Configurando o Dspam

Altere as seguintes parâmetros do seu arquivo de configuração /usr/local/etc/dspam.conf:

DeliveryHost            127.0.0.1
DeliveryPort            10026
DeliveryIdent           localhost
DeliveryProto           SMTP

FallbackDomains on

EnablePlusedDetail      on

QuarantineMailbox       +Spam

OnFail error

WebStats no

Preference “spamAction=tag”     # { quarantine | tag | deliver } -> default:quarantine
Preference “signatureLocation=headers”  # { message | headers } -> default:message

PgSQLServer             127.0.0.1
PgSQLPort               5432
PgSQLUser               dspam
PgSQLPass               dspam
PgSQLDb                 dspam

PgSQLConnectionCache    3

PgSQLUIDInSignature     on

PgSQLVirtualTable               dspam_virtual_uids
PgSQLVirtualUIDField            uid
PgSQLVirtualUsernameField       username

ExtLookup                      on                              # Turns on/off external lookup
ExtLookupMode           strict                          # available modes are ‘verify’, ‘map’ and ‘strict’.
# ‘strict’ enforces both verify and map
ExtLookupDriver          ldap                           # Currently only ldap and program are supported.
# There are plans to support both MySQL and Postgres.
ExtLookupServer          ldap.org.br              # Can either be a database hostname or the full path to
# an executable lookup program and its arguments.
ExtLookupPort             389                             # Desired port when connecting to the lookup database.
ExtLookupDB             “ou=users,dc=org,dc=br”  # Can either be an LDAP search base or a database name (TODO).
ExtLookupQuery          “(&(mail=%u)(accountStatus=active))”    # Can either be an LDAP search filter or an SQL query (TODO)
ExtLookupLDAPAttribute  “mail”               # Attribute to be used when ExtLookupDriver is ‘ldap’
# and ExtLookupMode ‘map’ or ‘strict’
ExtLookupLDAPVersion    3

ParseToHeaders on
ChangeModeOnParse on
ChangeUserOnParse on

ServerPID               /var/run/dspam.pid

ServerMode auto

ServerParameters        “–deliver=innocent,spam”
ServerIdent             “localhost”

ServerDomainSocketPath  “/tmp/dspam.sock”

Integrando o Postfix com o Dspam

Edite o arquivo /etc/postfix/master.cf e na primeira linha faça a seguinte alteração:

smtp      inet  n       –       n       –       –       smtpd   -o content_filter=lmtp:unix:/tmp/dspam.sock

No final do arquivo adicione as seguintes linhas:

localhost:10026 inet  n –       n       –       –        smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o smtpd_authorized_xforward_hosts=127.0.0.0/8

Iniciando os serviços afim de testar a solução:

/etc/init.d/postfix reload

dspam –daemon –debug

Envie um e-mail para o postfix e acompanhe os logs gerados pelo dspam, utilize o comando dspam_stats -H para gerar um relatório da base dspam.

Verifique o código fonte do e-mail tem as seguintes linhas no cabeçalho:

X-DSPAM-Result: Innocent
X-DSPAM-Processed: Tue Jun 29 04:02:26 2010
X-DSPAM-Confidence: 0.6764
X-DSPAM-Probability: 0.0000
X-DSPAM-Signature: 3,4c299a82314523618417981

Após finalizar a configuração da solução, crie um script de inicialização automática para o serviço Dspam.

Integrando o Dspam com Expresso Livre

Verifique qual usuário do servidor Web que o Expresso está utilizando, no meu caso é o apache, então conceda as permissões necessárias para que o usuário apache consiga executar o comando dspam.

Dica: Verifique as permissões do executavel (/usr/local/bin/dspam) e seu arquivo de configuração (/usr/local/etc/dspam.conf).

Então habilite a opção Spam no Expresso Livre, clique no ícone Administrador -> Expresso Mail -> Configuração do Servidor:

Você gostaria de utilizar o filtro anti-spam? Marque (SIM)

Comando que será executado ao marcar como spam (/usr/local/bin/dspam –client –user ##EMAIL## –class=spam –source=error –signature=##SIGNATURE## &)

Comando que será executado ao marcar como não-spam  (/usr/local/bin/dspam –client –user ##EMAIL## –class=innocent –source=error –signature=##SIGNATURE## &)

Então execute os comandos Marcar como Spam e Não é spam no Expresso e verifique o resultado com o comando dspam_stat -H email@org.br se a integração está funcionando corretamente.

Legenda do comando dspam_stat

  • TP: mensagens corretamente classificadas como spam
  • TN: mensagens corretamente classificadas como normais
  • FP: mensagens erradamente classificadas como spam (conforme retreinamento)
  • FN: mensagens erradamente classificadas como normais (conforme retreinamento)
  • TL: quanto falta para 2500 mensagens – a partir daí, o Dspam muda o algoritmo de aprendizado
  • SHR: porcentagem de spams corretamente classificados
  • HSR: porcentagem de normais incorretamente classificados como spam
  • OCA: porcentagem de mensagens corretamente classificadas
Anúncios