Różnice pomiędzy wersjami 3 i 5 (Spinanie 2 wersji)
⇤ ← Wersja 3 z 2014-01-01 00:06:05 →
Rozmiar: 6130
Edytor: wtps0n
Komentarz: + konfiguracja dspam
← Wersja 5 z 2014-03-31 09:36:55 → ⇥
Rozmiar: 7142
Edytor: wtps0n
Komentarz: +toc; modyfikacje po uruchomieniu w środowisku produkcyjnym
Usunięcia zostały oznaczone w ten sposób. Dodatki zostały oznaczone w ten sposób.
Linia 3: Linia 3:

<<TableOfContents()>>
Linia 24: Linia 26:
}}}

=== Patchowanie dla dspam_signature_data ===
Jest tylko jedno ale: __przy włączonej obsłudze OpenDKIM oraz postgresql 9.2__ pojawiają się błędy w logach. Trzeba poprawić skrypt '''pgsql_objects.sql''' wg następującego patcha:
{{{#!diff numbers=off
--- /usr/local/share/examples/dspam/pgsql/pgsql_objects.sql 2014-01-01 00:34:35.000000000 +0100
+++ /usr/local/share/examples/dspam/pgsql/pgsql_objects_corr.sql 2014-03-31 11:03:30.103651874 +0200
@@ -11,7 +11,7 @@

 CREATE TABLE dspam_signature_data (
   uid INT,
- signature varchar(128),
+ signature BYTEA,
   data BYTEA,
   length INT,
   created_on DATE,
}}}

=== Zmiana właściciela obiektów w bazie danych ===
{{{#!shell numbers=off
echo '\dt' | psql -U pgsql dspam_db | awk '/public/ {print "ALTER TABLE",$3,"OWNER TO dspam;";}' | psql -U pgsql dspam_db
echo '\ds' | psql -U pgsql dspam_db | awk '/public/ {print "ALTER SEQUENCE",$3,"OWNER TO dspam;";}' | psql -U pgsql dspam_db

Uruchomienie filtrowania poczty za pomocą dspam

Dspam to alternatywa do bogofiltra czy mocno rozbudowanego spamd oraz amavisd-new. Dspam potrafi przekazać maila do sprawdzenia do silnika antywirusowego ClamAV, tak więc dla postfixa jest tylko jeden content_filter.

Zainstalowanie dspam

Wszystko zostało przedstawione w etapie instalacji serwera pocztowego

Przygotowanie bazy danych

Kolejnym krokiem jest przygotowanie bazy danych (PostgreSQL):

createuser -U pgsql -DERS dspam
createdb -U pgsql -E UTF8 -O dspam dspam_db
createlang -U pgsql plpgsql dspam_db

Wgranie schematu do bazy danych

Jest gotowy skrypt SQLowy, który pozwala na założenie bazy danych dla dspam:

cat /usr/local/share/examples/dspam/pgsql/pgsql_objects.sql | psql -U pgsql dspam_db
cat /usr/local/share/examples/dspam/pgsql/virtual_users.sql | psql -U pgsql dspam_db

Patchowanie dla dspam_signature_data

Jest tylko jedno ale: przy włączonej obsłudze OpenDKIM oraz postgresql 9.2 pojawiają się błędy w logach. Trzeba poprawić skrypt pgsql_objects.sql wg następującego patcha:

--- /usr/local/share/examples/dspam/pgsql/pgsql_objects.sql     2014-01-01 00:34:35.000000000 +0100
+++ /usr/local/share/examples/dspam/pgsql/pgsql_objects_corr.sql        2014-03-31 11:03:30.103651874 +0200
@@ -11,7 +11,7 @@

 CREATE TABLE dspam_signature_data (
   uid INT,
-  signature varchar(128),
+  signature BYTEA,
   data BYTEA,
   length INT,
   created_on DATE,

Zmiana właściciela obiektów w bazie danych

echo '\dt' | psql -U pgsql dspam_db | awk '/public/ {print "ALTER TABLE",$3,"OWNER TO dspam;";}' | psql -U pgsql dspam_db
echo '\ds' | psql -U pgsql dspam_db | awk '/public/ {print "ALTER SEQUENCE",$3,"OWNER TO dspam;";}' | psql -U pgsql dspam_db

Konfigurowanie dspam.conf

Plik konfiguracyjny to /usr/local/etc/dspam.conf:

# Katalog domowy do przechowywania wszelkich danych
#
Home /var/db/dspam

# Sterownik do bazy danych (zgodnie z wyborem przy instalacji)
#
StorageDriver /usr/local/lib/dspam/libpgsql_drv.so

# Agent do dostarczenia poczty po sprawdzeniu poczty
#
#TrustedDeliveryAgent "/usr/libexec/mail.local"
TrustedDeliveryAgent "/usr/local/cyrus/bin/deliver"

# sposób alternatywny:
#
DeliveryHost            127.0.0.1
DeliveryPort            10026
DeliveryIdent           dspam
DeliveryProto           SMTP

# co zrobić, jak się nie uda przekazać do kwarantanny
#
OnFail error

# zaufani użytkownicy
#
Trust root
Trust dspam
Trust apache
Trust mail
Trust mailnull
Trust smmsp
Trust daemon
#Trust nobody
#Trust majordomo

# sposób samonauczania
#
TrainingMode teft

TestConditionalTraining on

# dodatki
#
Feature whitelist

# algortym nauki
#
Algorithm graham burton

# rozbieranie maila na czynniki pierwsze - sposób sprawdzania
#
Tokenizer chain

# PValue: Specify the technique used for calculating Probability Values,
# overriding any defaults configured in the build. These options are:
PValue bcr

# statystyki
#
WebStats on

# ImprobabilityDrive: Calculate odds-ratios for ham/spam, and add to
# X-DSPAM-Improbability headers
#
ImprobabilityDrive on

Preference "trainingMode=TEFT"          # { TOE | TUM | TEFT | NOTRAIN } -> default:teft
Preference "spamAction=quarantine"      # { quarantine | tag | deliver } -> default:quarantine
Preference "spamSubject=[SPAM]"         # { string } -> default:[SPAM]
Preference "statisticalSedation=5"      # { 0 - 10 } -> default:0
Preference "enableBNR=on"               # { on | off } -> default:off
Preference "enableWhitelist=on"         # { on | off } -> default:on
Preference "signatureLocation=message"  # { message | headers } -> default:message
Preference "tagSpam=off"                # { on | off }
Preference "tagNonspam=off"             # { on | off }
Preference "showFactors=off"            # { on | off } -> default:off
Preference "optIn=off"                  # { on | off }
Preference "optOut=off"                 # { on | off }
Preference "whitelistThreshold=10"      # { Integer } -> default:10
Preference "makeCorpus=off"             # { on | off } -> default:off
Preference "storeFragments=off"         # { on | off } -> default:off
Preference "localStore="                # { on | off } -> default:username
Preference "processorBias=on"           # { on | off } -> default:on
Preference "fallbackDomain=off"         # { on | off } -> default:off
Preference "trainPristine=off"          # { on | off } -> default:off
Preference "optOutClamAV=off"           # { on | off } -> default:off
Preference "ignoreRBLLookups=off"       # { on | off } -> default:off
Preference "RBLInoculate=off"           # { on | off } -> default:off

# nadpisywanie preferencji przez użytkowników
#
AllowOverride enableBNR
AllowOverride enableWhitelist
AllowOverride fallbackDomain
AllowOverride ignoreGroups
AllowOverride ignoreRBLLookups
AllowOverride localStore
AllowOverride makeCorpus
AllowOverride optIn
AllowOverride optOut
AllowOverride optOutClamAV
AllowOverride processorBias
AllowOverride RBLInoculate
AllowOverride showFactors
AllowOverride signatureLocation
AllowOverride spamAction
AllowOverride spamSubject
AllowOverride statisticalSedation
AllowOverride storeFragments
AllowOverride tagNonspam
AllowOverride tagSpam
AllowOverride trainPristine
AllowOverride trainingMode
AllowOverride whitelistThreshold
AllowOverride dailyQuarantineSummary

# ustawienia do bazy danych PostgreSQL
PgSQLServer             /tmp
#PgSQLPort
PgSQLUser               dspam
PgSQLPass               _haslo_do_zmiany_
PgSQLDb                 dspam_db

PgSQLUIDInSignature     on
PgSQLVirtualTable               dspam_virtual_uids
PgSQLVirtualUIDField            uid
PgSQLVirtualUsernameField       username

HashRecMax              98317
HashAutoExtend          on
HashMaxExtents          0
HashExtentSize          49157
HashPctIncrease         10
HashMaxSeek             10
HashConnectionCache     10
Notifications   off
PurgeSignatures 14      # Stale signatures
PurgeNeutral    90      # Tokens with neutralish probabilities
PurgeUnused     90      # Unused tokens
PurgeHapaxes    30      # Tokens with less than 5 hits (hapaxes)
PurgeHits1S     15      # Tokens with only 1 spam hit
PurgeHits1I     15      # Tokens with only 1 innocent hit
LocalMX 127.0.0.1
SystemLog       on
UserLog         on
TrackSources    spam
Opt out

# przekazywanie poczty do antywirusa
#
ClamAVPort              3310
ClamAVHost              127.0.0.1
ClamAVResponse          accept

# -- CLIENT / SERVER --

#
ServerMode auto
ServerPass.Relay1       "secret"
ServerParameters        "--deliver=innocent -d %u"
ServerDomainSocketPath  "/var/run/dspam.sock"

ProcessorURLContext on
ProcessorBias on
StripRcptDomain off

## EOF

PostfixDspam (ostatnio edytowane 2019-12-07 09:56:01 przez wtps0n)