URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 94094
[ Назад ]

Исходное сообщение
"DSpam помечает всё как Innocent"

Отправлено DJ Kill , 30-Ноя-12 13:44 
Стоит FreeBSD 9.0-RELEASE на которой dspam-3.9.0_2

dspam работает и никаких ошибок не выдаёт.
Обучен на большом количестве писем.

Но 100% писем, проходящих через него имеют такие хеадеры:

    X-DSPAM-Result: Innocent
    X-DSPAM-Processed: Fri Nov 30 00:45:12 2012
    X-DSPAM-Confidence: 0.9899
    X-DSPAM-Probability: 0.0000
    X-DSPAM-Signature: 50b7c958575206899212605

Как следствие весь спам валится в общую кучу.

Что я делаю не так? Крутил его уже во все стороны - результат один и тот же.

Если обучать заново - он спам-письма нормально учит как спам. Но результата всё равно никакого.

Конфиг dspam.conf

    Home /var/db/dspam

    StorageDriver /usr/local/lib/dspam/libmysql_drv.so

    TrustedDeliveryAgent "/usr/local/sbin/exim -oMr spam-scanned" # Exim
    QuarantineAgent "/usr/local/sbin/exim"

    DeliveryHost            127.0.0.1

    OnFail error

    Trust root
    Trust dspam
    Trust apache
    Trust mail
    Trust mailnull
    Trust smmsp
    Trust daemon
    #Trust nobody
    #Trust majordomo

    Debug *

    TrainingMode teft

    TestConditionalTraining on

    Feature tb=5

    ParseToHeaders          on
    ChangeModeOnParse       on
    ChangeUserOnParse       full

    Algorithm graham burton

    Tokenizer chain

    PValue bcr

    WebStats 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=headers"  # { 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

    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

    MySQLServer             /tmp/mysql.sock
    MySQLPort
    MySQLUser               dspam
    MySQLPass               dspam
    MySQLDb         dspam
    MySQLCompress           true
    MySQLReconnect          true

    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

    TrainPristine   on
    Opt out

    ClamAVPort              3310
    ClamAVHost              127.0.0.1
    ClamAVResponse          accept

    ProcessorURLContext on
    ProcessorBias on
    StripRcptDomain off

/var/db/dspam/group
    primary:classification:kirill@16v.ru

dspam_stats -H kirill@16v.ru
    kirill@16v.ru:
                    TP True Positives:                  3130
                    TN True Negatives:                  2676
                    FP False Positives:                   41
                    FN False Negatives:                  558
                    SC Spam Corpusfed:                     0
                    NC Nonspam Corpusfed:                  0
                    TL Training Left:                      0
                    SHR Spam Hit Rate                 84.87%
                    HSR Ham Strike Rate:               1.51%
                    PPV Positive predictive value:    98.71%
                    OCA Overall Accuracy:             90.65%


Содержание

Сообщения в этом обсуждении
"DSpam помечает всё как Innocent"
Отправлено DJ_Kill , 05-Дек-12 07:58 
И тишина.

Может быть кто-то предложит альтенативную защиту от спама, кроме ухода на гугль и покупку Iron Port? Пусть даже платное...


"DSpam помечает всё как Innocent"
Отправлено RAPH , 17-Дек-12 15:34 
Нужно сделать вот так в dspam.conf:
    TrainPristine off
    ParseToHeaders off
    ChangeModeOnParse off
    ChangeUserOnParse off

И на всякий случай вот так в /var/db/dspam/group:
    globalgroup:shared:*


"DSpam помечает всё как Innocent"
Отправлено DJ_Kill , 13-Фев-13 14:10 
> Нужно сделать вот так в dspam.conf:
>     TrainPristine off
>     ParseToHeaders off
>     ChangeModeOnParse off
>     ChangeUserOnParse off

Пробовал в разных комбинациях. Не помогает.

> И на всякий случай вот так в /var/db/dspam/group:
>     globalgroup:shared:*

Это сделано, только system вместо globalgroup.

Какое-то время всё работало корректно. После переезда системы на 9.1 (система с нуля, конфиги из бекапа, версии софта остались точно теми же) работать всё перестало.

Он учится, счётчики растут, но спам сквозь него проходит 100%.

Может есть какое-то другое средство защиты от спама? Имею негативный опыт по СпамАссассину.
Dspam хорошо работает, но когда слетает это уже не лечится - черный ящик без документации по сути.
Что-то ещё?



"DSpam помечает всё как Innocent"
Отправлено LSTemp , 14-Фев-13 02:30 
>[оверквотинг удален]
> Обучен на большом количестве писем.
> Но 100% писем, проходящих через него имеют такие хеадеры:
>     X-DSPAM-Result: Innocent
>     X-DSPAM-Processed: Fri Nov 30 00:45:12 2012
>     X-DSPAM-Confidence: 0.9899
>     X-DSPAM-Probability: 0.0000
>     X-DSPAM-Signature: 50b7c958575206899212605
> Как следствие весь спам валится в общую кучу.
> Что я делаю не так? Крутил его уже во все стороны -
> результат один и тот же.

1) изучить почтовые протоколы
2) настроить анализ и соотвествующую реакцию на X-заголовки в Вашей почтовой системе.


"DSpam помечает всё как Innocent"
Отправлено DJ_Kill , 14-Фев-13 09:50 
> 1) изучить почтовые протоколы
> 2) настроить анализ и соотвествующую реакцию на X-заголовки в Вашей почтовой системе.

Хочется ответить что-нибудь колкое о том, что с 96-го года я, конечно, так и не удосужился почитать как работает почта, но отвечу по делу для тех кто столкнётся и будет искать решение:

Вылечилось всё очисткой базы данных от всех сигнатур методом drop database && create database, потом переключил dspam на работу с сокетом, а не адресом:портов (/tmp/mysql.sock в строку адреса, строку порта оставить пустой) и последующим повторным обучением.

Ему необходимо выучить минимум 2500 писем чтобы он заработал (dspam_stats -H user показывает сколько писем недоучено).

Ошибки SQL в логи продолжают сыпаться, но это создатели dspam так понимают verbose debug.

Если сказать TrainPrestine on, то начинают ещё проскакивать ошибки о том, что не получены сигнатуры, но система продолжает работать (выключил это на всякий случай).

Ну и да, экзим у меня сортирует почту по заголовку X-DSPAM-Result. Так что он вполне настроен.