Dspam в качестве демона

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
gyurza2000
лейтенант
Сообщения: 895
Зарегистрирован: 2007-07-08 23:53:20
Откуда: SPb
Контактная информация:

Re: Dspam в качестве демона

Непрочитанное сообщение gyurza2000 » 2013-12-04 21:26:30

Oleg_M писал(а):Уважаемые гуру, подскажите:
настраиваю DSPAM по статье http://www.lissyara.su/articles/freebsd ... n_to_exim/
при импорте БД:

Код: Выделить всё

# mysql -h localhost -u dspam -pSECRET dspam 
< /usr/local/share/examples/dspam/mysql/mysql_objects-speed.sql
# mysql -h localhost -u dspam -pSECRET dspam 
< /usr/local/share/examples/dspam/mysql/virtual_users.sql
ругается что файлов не существует, ну их и в самом деле нету, нашел в портах эти файлы, попытался подкинуть оттуда ругается так:

Код: Выделить всё

mysql -h localhost -u ******* -p****** dspam < /usr/ports/mail/dspam/work/dspam-3.9.0/src/tools.mysql_drv/mysql_objects-speed.sql
ERROR 1064 (42000) at line 3: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=MyISAM' at line 7
root@gate:/usr/home/mordovenko # mysql -h localhost -u ******* -p******** dspam < /usr/ports/mail/dspam/work/dspam-3.9.0/src/tools.mysql_drv/virtual_users.sql
ERROR 1064 (42000) at line 3: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=MyISAM' at line 4
Как решить проблемку?
Аналогичная проблема!Как решить?
Xeon X5460, RAM 8Gb, FreeBSD 13.1-RELEASE on amd64, Apache 2.4, PHP 7.3.30, MySQL 5.7, Exim 4.95_5, Dovecot 2.3.19.1

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

gyurza2000
лейтенант
Сообщения: 895
Зарегистрирован: 2007-07-08 23:53:20
Откуда: SPb
Контактная информация:

Re: Dspam в качестве демона

Непрочитанное сообщение gyurza2000 » 2013-12-04 22:36:01

Ага...DSPAM то у нас 3.9, а поддержку MySQL 5.5 добавили только с версии 3.10
Xeon X5460, RAM 8Gb, FreeBSD 13.1-RELEASE on amd64, Apache 2.4, PHP 7.3.30, MySQL 5.7, Exim 4.95_5, Dovecot 2.3.19.1

gyurza2000
лейтенант
Сообщения: 895
Зарегистрирован: 2007-07-08 23:53:20
Откуда: SPb
Контактная информация:

Re: Dspam в качестве демона

Непрочитанное сообщение gyurza2000 » 2013-12-15 1:55:46

бъясните пожалуйста, в круглокубе при нажатии кнопочки SPAM (плагин markasjunk2) и соответственно перемещении письма в папку SPAM происходит обучение DSPAM? у меня надпись [SPAM] в тему письма НЕ добавляется и X-DSPAM-Result: Innocent, и если нажимать кнопку НЕспам, тоже ничего не меняется с письмами. Зато когда DSPAM самостоятельно ловит письма (а сейчас он туда пихает практически всю почту), то и [SPAM] в тему письма добавляется и X-DSPAM-Result: Spam

/usr/local/etc/rc.d/dspam start, а в логах пишется:

Код: Выделить всё

Dec 15 00:14:37 adios dspam[72354]: Could not bind to :24: Permission denied
    Dec 15 00:14:37 adios dspam[72354]: Could not bind to :24: Permission denied
    Dec 15 00:14:37 adios dspam[72354]: Daemon mode failed to start
    Dec 15 00:14:37 adios dspam[72354]: Daemon mode failed to start
Xeon X5460, RAM 8Gb, FreeBSD 13.1-RELEASE on amd64, Apache 2.4, PHP 7.3.30, MySQL 5.7, Exim 4.95_5, Dovecot 2.3.19.1

gyurza2000
лейтенант
Сообщения: 895
Зарегистрирован: 2007-07-08 23:53:20
Откуда: SPb
Контактная информация:

Re: Dspam в качестве демона

Непрочитанное сообщение gyurza2000 » 2014-10-26 11:27:08

Код: Выделить всё

Oct 26 12:23:17 adios dspam[85473]: Daemon process starting
Oct 26 12:23:17 adios dspam[85473]: Too many connections
Oct 26 12:23:17 adios last message repeated 850 times
Oct 26 12:23:17 adios dspam[85473]: Could not bind to :24: Address already in use
Oct 26 12:23:17 adios dspam[85473]: Daemon mode failed to start
Oct 26 12:23:17 adios dspam[85473]: Daemon process exiting
Xeon X5460, RAM 8Gb, FreeBSD 13.1-RELEASE on amd64, Apache 2.4, PHP 7.3.30, MySQL 5.7, Exim 4.95_5, Dovecot 2.3.19.1

Аватара пользователя
Lazy caT
мл. сержант
Сообщения: 101
Зарегистрирован: 2008-09-11 9:59:17
Откуда: Местные мы...
Контактная информация:

Re: Dspam в качестве демона

Непрочитанное сообщение Lazy caT » 2014-12-12 13:57:27

gyurza2000 писал(а):бъясните пожалуйста, в круглокубе при нажатии кнопочки SPAM (плагин markasjunk2) и соответственно перемещении письма в папку SPAM происходит обучение DSPAM? у меня надпись [SPAM] в тему письма НЕ добавляется и X-DSPAM-Result: Innocent, и если нажимать кнопку НЕспам, тоже ничего не меняется с письмами.
Нет, обучения не происходит... Там, на сколько я понял, есть драйверы с какими фильтрами работает сам плагин.
Так вот dspam'а я там не нашел.
Можно использовать драйвер email и редиректить на свой же почтовик письма spam-<mail@address> и notspam-<mail@address> как того требует dspam для переобучения.
gyurza2000 писал(а):Зато когда DSPAM самостоятельно ловит письма (а сейчас он туда пихает практически всю почту), то и [SPAM] в тему письма добавляется и X-DSPAM-Result: Spam

/usr/local/etc/rc.d/dspam start, а в логах пишется:

Код: Выделить всё

Dec 15 00:14:37 adios dspam[72354]: Could not bind to :24: Permission denied
    Dec 15 00:14:37 adios dspam[72354]: Could not bind to :24: Permission denied
    Dec 15 00:14:37 adios dspam[72354]: Daemon mode failed to start
    Dec 15 00:14:37 adios dspam[72354]: Daemon mode failed to start
Проверьте права dspam'а.

Я столкнулся с этим когда настраивал связку DSPAM'ов в режиме клиент/сервер... У меня DSPAM'овские клиенты не запущались до тех пор пока я их не пересобрал с DSPAM_OWNER?=root.

SKazurov
ефрейтор
Сообщения: 51
Зарегистрирован: 2008-09-06 15:15:15

Dspam в качестве демона

Непрочитанное сообщение SKazurov » 2015-05-16 14:08:41

Коллеги, подскажите, пожалуйста, один момент. Не понимаю, что означает символ %u в параметрах запуска dspam
undefined писал(а): dspam_notspam_transport:
command = "/usr/local/bin/dspam --user spam --class=innocent --source=error --deliver=innocent %u"
undefined писал(а): dspam_spamcheck_transport:
command = /usr/local/bin/dspam --deliver=innocent --user spam -- %u
Вообще, исходя из мана, %u содержит в себе имя пользователя, spam в данном случае. Так зачем вставляют этот макрос, если мы итак уже указываем ключ --user spam?
Никто не задумывался?

stas_sv
проходил мимо
Сообщения: 6
Зарегистрирован: 2016-07-14 10:17:56

Dspam в качестве демона

Непрочитанное сообщение stas_sv » 2016-07-14 10:27:49

Добрый день!
Вешаюсь.
все собирал по статьям отсюда.
dspam никак не хочет работать и даже писать логи.
куда копать не могу понять.
помогите чем нибудь.
При перемещении письма в папку Junk ничего не происходит.
связка exim+dovecot2+dspam+roundcube
какие куски каких конфигов привести?
Спасибо!

Аватара пользователя
Lazy caT
мл. сержант
Сообщения: 101
Зарегистрирован: 2008-09-11 9:59:17
Откуда: Местные мы...
Контактная информация:

Dspam в качестве демона

Непрочитанное сообщение Lazy caT » 2016-07-14 10:50:53

stas_sv писал(а):Добрый день!
Вешаюсь.
все собирал по статьям отсюда.
dspam никак не хочет работать и даже писать логи.
куда копать не могу понять.
помогите чем нибудь.
При перемещении письма в папку Junk ничего не происходит.
связка exim+dovecot2+dspam+roundcube
какие куски каких конфигов привести?
Спасибо!
Смотри права DSPAM...
90% проблем из-за некорректности установки прав.
Пересобери DSPAM с правами root:mail

в make.conf:

Код: Выделить всё

PORTSDIR?=/usr/ports
.if ${.CURDIR} == ${PORTSDIR}/mail/dspam
DSPAM_OWNER=root
DSPAM_GROUP=mail
DSPAM_HOME_OWNER=dspam
DSPAM_HOME_GROUP=mail
.endif

Код: Выделить всё

[10:46] mailv:/usr/ports/mail/dspam/work/dspam-3.10.2 >cat ./config.log | grep 'dspam_'
configure:12588: checking for dspam_home
dspam_group='mail'
dspam_home='/var/db/dspam'
dspam_home_group='mail'
dspam_home_mode='0770'
dspam_home_owner='dspam'
dspam_mode='0555'
dspam_owner='root'
... а дальше посмотрим... :smile:

stas_sv
проходил мимо
Сообщения: 6
Зарегистрирован: 2016-07-14 10:17:56

Dspam в качестве демона

Непрочитанное сообщение stas_sv » 2016-07-14 11:27:55

Странно, но по прежнему глухо. Даже если запускать не демоном...
dspam.conf

Код: Выделить всё

Home /var/db/dspam
StorageDriver /usr/local/lib/dspam/libmysql_drv.so
#StorageDriver /usr/local/lib/dspam/libhash_drv.so
TrustedDeliveryAgent "/usr/local/sbin/exim -oMr spam-scanned"
UntrustedDeliveryAgent "/usr/local/sbin/exim -oMr spam-scanned"
#ServerDomainSocketPath "/var/run/dspam.sock"
#ClientHost "/var/run/dspam.sock"
#ServerMode auto
OnFail error
Trust root
Trust mail
Trust mailnull
Trust www
TrainingMode teft
TestConditionalTraining on
Feature chained noise
Algorithm graham burton
PValue graham
Preference "signatureLocation=headers"
Preference "showFactors=on"
Preference "spamAction=tag"
Preference "spamSubject=SPAM"
AllowOverride trainingMode
AllowOverride spamAction spamSubject
AllowOverride statisticalSedation
AllowOverride enableBNR
AllowOverride enableWhitelist
AllowOverride signatureLocation
AllowOverride showFactors
AllowOverride optIn optOut
AllowOverride whitelistThreshold
MySQLServer<---><------>localhost
MySQLPort<-----><------>3306
MySQLUser<-----><------>dspam
MySQLPass<-----><------>dspam*pass
MySQLDb><------><------>dspam
MySQLConnectionCache<-->1000
HashRecMax<----><------>98317
HashAutoExtend<><------>on
HashMaxExtents<><------>0
HashExtentSize<><------>49157
HashMaxSeek<---><------>100
HashConnectionCache<--->100
IgnoreHeader X-Spam-Status
IgnoreHeader X-Spam-Score
IgnoreHeader X-Spam-Scanned
IgnoreHeader X-Virus-Scanner-Result
IgnoreHeader Date
IgnoreHeader Envelope-to
IgnoreHeader Delivery-date
IgnoreHeader Received
IgnoreHeader User-Agent
IgnoreHeader Content-Type
IgnoreHeader Content-Transfer-Encoding
IgnoreHeader To
Notifications<->off
LocalMX 127.0.0.1
SystemLog on
Opt out
MaxMessageSize 200000
ProcessorBias on
#ServerParameters "--deliver=innocent -d %u"
exim.conf

Код: Выделить всё

# DSPAM ROUTERS
dspam_spamscan_router:
 driver = accept
 domains                      = +local_domains
 no_verify
 condition = "${if and {{!eq {$received_protocol}{spam-scanned}} \
<------><------>{!eq {$received_protocol}{local}} } {1}{0}}"
 transport = dspam_spamcheck_transport
# transport = lmtp
 require_files = /usr/local/bin/dspam
 address_test = false
 user = mailnull
 group = mail

local_delivery_spam_router:
 driver                       = accept
 domains                      = +local_domains
 condition                    = ${if match{$h_X-DSPAM-Result:}{Spam}}
 transport                    = local_delivery_spam_transport
 no_more
 user = mailnull
 group = mail

# LOCAL DELIVERY
dovecot_user:
  driver = accept
  condition = ${lookup mysql{SELECT `goto` FROM \
  `alias` WHERE \
  `address`='${quote_mysql:$local_part@$domain}' OR \
  `address`='${quote_mysql:@$domain}'}{yes}{no}}
  transport = dovecot_delivery

# DSPAM TRANSPORT
#lmtp:
# driver = lmtp
# socket = /var/run/dspam.sock
# batch_max = 20
# user = mailnull

dspam_addspam_transport:
  driver = pipe
  command = "/usr/local/bin/dspam --user $local_part@$domain --class=spam --source=error"
  return_path_add = false
  return_fail_output = true
  log_output = true
  home_directory = "/var/db/dspam"
  current_directory = "/var/db/dspam"
  user = mailnull
  group = mail

dspam_notspam_transport:
  driver = pipe
  command = "/usr/local/bin/dspam --user $local_part@$domain --class=innocent --source=error --deliver=innocent %u"
  return_path_add = false
  return_fail_output = true
  log_output = true
  home_directory = "/var/db/dspam"
  current_directory = "/var/db/dspam"
  user = mailnull
  group = mail

dspam_spamcheck_transport:
  driver = pipe
  command = /usr/local/bin/dspam --deliver=innocent --user "$local_part@$domain" -- %u
  user = mailnull
  group = mail
  return_path_add = false
  log_output = true
  return_fail_output = true
  headers_remove        = X-DSPAM-Result

local_delivery_spam_transport:
  driver = pipe
  command = /usr/local/libexec/dovecot/deliver -d $local_part@$domain -m Junk
  message_prefix =
  message_suffix =
  delivery_date_add
  envelope_to_add
  return_path_add
  log_output
  user = mailnull
Dovecot:

10-mail.conf

Код: Выделить всё

mail_home = maildir:/var/mail/exim/%d/%n/mail
mail_location = maildir:/var/mail/exim/%d/%n
namespace inbox {
  inbox = yes
    mailbox Trash {
    auto = subscribe
    special_use = \Trash
    }
    mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
    }
    mailbox Sent {
    auto = subscribe # autocreate and autosubscribe the Sent mailbox
    special_use = \Sent
    }
    mailbox Junk {
    auto = subscribe # autocreate Spam, but don't autosubscribe
    special_use = \Junk
    }
}
  mail_uid = mailnull
  mail_gid = mail
  mail_privileged_group = mail
  mail_full_filesystem_access = no
  mmap_disable = no
  dotlock_use_excl = yes
  mail_fsync = optimized
  mail_nfs_storage = no
  lock_method = fcntl
  mail_temp_dir = /var/tmp
  first_valid_uid = 26
  first_valid_gid = 26
  mail_plugin_dir = /usr/local/lib/dovecot
  mail_plugins = $mail_plugins # quota
  maildir_copy_with_hardlinks = yes
  mail_attachment_hash = %{sha1}
15-lda.conf

Код: Выделить всё

#quota_full_tempfail = no
submission_host = localhost:25
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
protocol lda {
    mail_plugins = $mail_plugins antispam sieve #quota
    log_path = /var/log/dovecot/lda/lda.log
    info_log_path = /var/log/dovecot/lda/lda-info.log
#    syslog_facility = mail
}
20-imap.conf

Код: Выделить всё

protocol imap {
    mail_max_userip_connections = 5
    mail_plugins = $mail_plugins antispam # imap_quota
    imap_logout_format = bytes=%i/%o
    imap_idle_notify_interval = 2 mins
}
90-plugin.conf

Код: Выделить всё

plugin {
antispam_backend = dspam.
antispam_dspam_notspam = --class=innocent
antispam_dspam_spam = --class=spam.
antispam_spam = JUNK;Junk;junk
antispam_trash = trash;Trash;Deleted Items;Deleted Messages
antispam_spam_pattern_ignorecase = Junk;Junk.*
antispam_trash_pattern_ignorecase = Trash;Deleted Items;Deleted Messages
antispam_dspam_result_header = X-DSPAM-Result
antispam_signature = X-DSPAM-Signature
antispam_signature_missing = move
antispam_dspam_binary = /usr/local/bin/dspam
antispam_dspam_args = --user;%u;--deliver=;--source=error;--signature=%s
}
Как то так.


забыл сказать, пересобрал как ты написал. все ок. но в логах и в /var/db/dspam тишина....

/var/db/dspam/group

Код: Выделить всё

 system:shared:* 

Аватара пользователя
Lazy caT
мл. сержант
Сообщения: 101
Зарегистрирован: 2008-09-11 9:59:17
Откуда: Местные мы...
Контактная информация:

Dspam в качестве демона

Непрочитанное сообщение Lazy caT » 2016-07-14 11:48:23

права на /var/db/dspam должны быть dspam:mail

в транспорте exim'а:

Код: Выделить всё

dspam_addspam_transport:
  driver = pipe
  command = "/usr/local/bin/dspam --user $local_part@$domain --class=spam --source=error"
  return_path_add = false
  return_fail_output = true
  log_output = true
  home_directory = "/var/db/dspam"
  current_directory = "/var/db/dspam"
  user = [b]dspam[/b]
  group = mail

dspam_notspam_transport:
  driver = pipe
  command = "/usr/local/bin/dspam --user $local_part@$domain --class=innocent --source=error --deliver=innocent %u"
  return_path_add = false
  return_fail_output = true
  log_output = true
  home_directory = "/var/db/dspam"
  current_directory = "/var/db/dspam"
  user = [b]dspam[/b]
  group = mail

dspam_spamcheck_transport:
  driver = pipe
  command = /usr/local/bin/dspam --deliver=innocent --user "$local_part@$domain" -- %u
  user = [b]dspam[/b]
  group = mail
  return_path_add = false
  log_output = true
  return_fail_output = true
  headers_remove        = X-DSPAM-Result

stas_sv
проходил мимо
Сообщения: 6
Зарегистрирован: 2016-07-14 10:17:56

Dspam в качестве демона

Непрочитанное сообщение stas_sv » 2016-07-14 12:42:18

все поправил, результат тот же.... вот и вешаюсь...

Отправлено спустя 15 минут 23 секунды:
Теперь, к примеру, если Вы получили письмо, которое является заведомо спамом, но попало по ошибке фильтра во входящие, то чтобы переучить спамфильтр и сказать ему, что это письмо спамовое, достаточно просто переместить его в папку Спам(Junk) и после этого в логе соответствующего пользователя появиться запись свидетельствующая о переобучении спам-фильтра
# tail -f /var/db/dspam/data/username@domain.com.ua/username@domain.com.ua.log

1369209224 I spammail@pisem.net 519c7988278601581114498 dddddd Delivered <2afbf94cd4594c6f22610d8c18fc63cad334e4c2@mail.qip.ru>

1369209324 M <None Specified> 519c7988278601581114498 <None Specified> Retrained
А если письмо снова вернуть во Входящие, то письмо будет считаться не спамом.
нету у меня ничего в папке /var/db/dspam/data/

хоть бы лог какой нибудь, хоть чего... даже Debug * есть, и все равно глухо...

Отправлено спустя 12 минут 35 секунд:
Причем результат нулевой и при перемещении письма Батом и раундкубом, и плагином раундкуба markasjunk2 в конфиге которого прописано:

Код: Выделить всё

$rcmail_config['markasjunk2_spam_cmd'] = '/usr/local/bin/dspam --source=error --class=spam --user %i --signature=%s';
$rcmail_config['markasjunk2_ham_cmd'] = '/usr/local/bin/dspam --source=error --class=innocent --user %i --signature=%s';

Аватара пользователя
Lazy caT
мл. сержант
Сообщения: 101
Зарегистрирован: 2008-09-11 9:59:17
Откуда: Местные мы...
Контактная информация:

Dspam в качестве демона

Непрочитанное сообщение Lazy caT » 2016-07-14 13:02:14

В домашней директории dspam'а создать папку logs с правами root:mail (0755)

в конфиге dspam'а:

stas_sv
проходил мимо
Сообщения: 6
Зарегистрирован: 2016-07-14 10:17:56

Dspam в качестве демона

Непрочитанное сообщение stas_sv » 2016-07-14 13:26:27

а в ответ тишина.

Отправлено спустя 7 минут 21 секунду:
вот по этому и вешаюсь... уже второй день мучаюсь и 0 инфы куда копнуть, с исходников пересобрать чтоли все....

Аватара пользователя
Lazy caT
мл. сержант
Сообщения: 101
Зарегистрирован: 2008-09-11 9:59:17
Откуда: Местные мы...
Контактная информация:

Dspam в качестве демона

Непрочитанное сообщение Lazy caT » 2016-07-14 14:31:19

Куда ваш dspam должен логи класть?
Директория, куда ваш dspam должен логи класть, присутствует?

добавьте в make.conf, (в раздел о котором я писал выше):

Код: Выделить всё

LOG_DIR=/var/log/dspam
далее:

Код: Выделить всё

cd /usr/ports/mail/dspam/ && make reinstall
или при сборке:

Код: Выделить всё

cd /usr/ports/mail/dspam/ && make  --with-logdir=/var/log/dspam && make reinstall
Создать в /var/log директорию dspam установить права root:mail.

Код: Выделить всё

mkdir /var/log/dspam && chown root:mail /var/log/dspam 
Перезапустить dspam.

Если при перезапуске dspam не создаст сам лог-файл, создать в директории файл лога: touch /var/log/dspam/dspam.log && chown root:mail /var/log/dspam/dspam.log

Отправлено спустя 11 минут 42 секунды:
да и ещё...
stas_sv писал(а): а в ответ тишина.
И вообще, не думайте что за Вас остальные Вашу систему будут настраивать и решать Ваши проблемы...
Просто передрать конфиг и после "вешаться" из-за того что не работает, на мой взгляд, не настраивать систему...
Это BSD, тут думать надо - кумлать, а только потом наслаждаться результатом... Это не винда, где всё по "щелчку мышки"...
Хотя и там, тоже надо иногда думать.
Я над своей клиент-серверной связкой DSPAM'а кумлал 2 дня и 3 ночи (прям как в сказке :))... При этом, доходил до всего сам, перелопачивая мегатонны инфы в форумах...

stas_sv
проходил мимо
Сообщения: 6
Зарегистрирован: 2016-07-14 10:17:56

Dspam в качестве демона

Непрочитанное сообщение stas_sv » 2016-07-14 16:13:19

Уважаемый Lazy caT,
прошу прощения, но это можно сказать в первые столкнулся с такой проблемой.
До этого всегда решал проблемы с фрей сам, многое тоже собирал сам, действующий почтовик работает отлично, просто без dspam-a. наткнулся на эту статью и решил попробовать, и не получилось, причем прошло уже 3 дня и после чего я решил написать на форуме.
насчет "в ответ тишина" - это относилось логам, а не кому либо.
И кстати все сделал как Вы посоветовали, и все равно ничего. вот если бы хотябы один лог, ходябы строчка... но полную пустоту дебажить как то не получается (.
Спасибо Вам огромное!

Аватара пользователя
Lazy caT
мл. сержант
Сообщения: 101
Зарегистрирован: 2008-09-11 9:59:17
Откуда: Местные мы...
Контактная информация:

Dspam в качестве демона

Непрочитанное сообщение Lazy caT » 2016-07-14 18:04:25

Ок.

В таком случае, делаем всё с самого нуля...
СНЕСТИ ВСЁ!!! (машина не в продакшне?)

ОБЯЗАТЕЛЬНО!!!
Прописываем в make.conf строки конфигурации.
Ставим DSPAM.

Организуем простейший конфиг DSPAM, типа:

Код: Выделить всё

Home /var/db/dspam
StorageDriver /usr/local/lib/dspam/libmysql_drv.so
TrustedDeliveryAgent "/usr/local/sbin/exim -oMr spam-scanned"
OnFail error
Trust root
Trust dspam
Trust mail
Trust mailnull
Debug *
TrainingMode teft
TestConditionalTraining on
Feature whitelist
Algorithm graham burton
Tokenizer chain
PValue bcr

ImprobabilityDrive on

Preference "trainingMode=TEFT"
Preference "spamAction=tag"
Preference "spamSubject=[SPAM]"
Preference "statisticalSedation=5"
Preference "enableBNR=on"
Preference "enableWhitelist=on"
Preference "signatureLocation=headers"
Preference "tagSpam=off"
Preference "tagNonspam=off"
Preference "showFactors=off"
Preference "optIn=off"
Preference "optOut=off"
Preference "whitelistThreshold=10"
Preference "makeCorpus=off"
Preference "storeFragments=off"
Preference "localStore="
Preference "processorBias=on"
Preference "fallbackDomain=off"
Preference "trainPristine=off"
Preference "optOutClamAV=off"
Preference "ignoreRBLLookups=off"
Preference "RBLInoculate=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             127.0.0.1
MySQLPort               3306
MySQLUser               dspam
MySQLPass               dspam
MySQLDb                 dspam
MySQLCompress           true
MySQLReconnect          true
MySQLConnectionCache    100
MySQLVirtualTable               dspam_virtual_uids
MySQLVirtualUIDField            uid
MySQLVirtualUsernameField       username
MySQLUIDInSignature     on

#HashRecMax              98317
#HashAutoExtend          on
#HashMaxExtents          0
#HashExtentSize          49157
#HashPctIncrease         10
#HashMaxSeek             10
#HashConnectionCache     10

IgnoreHeader X-Spam-Status
IgnoreHeader X-Spam-Score
IgnoreHeader X-Spam-Scanned
IgnoreHeader X-Virus-Scanner-Result
IgnoreHeader Date
IgnoreHeader Envelope-to
IgnoreHeader Delivery-date
IgnoreHeader Received
IgnoreHeader Content-Type
IgnoreHeader Content-Transfer-Encoding
IgnoreHeader To

Notifications   on

LocalMX 127.0.0.1

SystemLog       on
UserLog         on

Opt out

MaxMessageSize 4194304
ProcessorURLContext on
ProcessorBias on
StripRcptDomain off

Обязательно проверяем наличие директорий dspam: домашняя, логи...
Проверяем соответствие прав установленных при сборке прававм на директориях.

Запускаем dspam.

Cмотрим: ps -ax | grep dspam
если есть что-то типа: 45340 0- S 5:30.09 /usr/local/bin/dspam --daemon
- всё ок, можно попробовать скормить ему какой-нибудь типа:

Код: Выделить всё

dspam --debug --classify 47,574e859811301747479808

в результате должен будет появится в логах dspam.debug с содержимым классификации данной сигнатуры.

если нет:
Cмотрим что в логах dspam (если есть)...
Cмотрим что в message...
или, как не странно, смотрим maillog.

Иногда бывает так что DSPAM запускается как сервис но при этом вываливает ошибку подключения к MySQL, и собственно, на этом всё и заканчивается. К стати, это сообщение вываливается в maillog.

Если скормленная сигнатура образовала вывод в dspam.debug (dspam ждет прихода сообщений) можно переходить к настройке exim.
при запущенном и правильно настроенном exim'е подключаемся к нему telnet'ом и скармливаем сообщение типа:

Код: Выделить всё

lhlo mail
mail from:<mailfrom@domain.com>
rcpt to:<mailto>
data
From: Troll <mailfrom@domain.com>
To: Somebody <somebody@domain.com>
Subject: This is a Spam but maybe not...
Any text...
.
после отправки сообщения, exim должен будет передать сообщение DSPAM'у на исследование...
И вся информация будет в логах... По крайней мере, должна быть... :)

Отправлено спустя 3 минуты 21 секунду:
Да, и ещё...
Если DSPAM, если он запущен, и все права корректно выставлены, не пишет логи, это не значит что он не работает, это может значить что ему туда писать нечего. :)

stas_sv
проходил мимо
Сообщения: 6
Зарегистрирован: 2016-07-14 10:17:56

Dspam в качестве демона

Непрочитанное сообщение stas_sv » 2016-07-22 9:47:28

Добрый день!
Пересобрал, добил, все работает, за исключением обработки писем при перетаскивании в папку Junk, причем ни Dovecot ни Roundcube.
Кто сталкивался с такой проблемой? Подскажете в куда копать? Конфиги все приведены выше.

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Dspam в качестве демона

Непрочитанное сообщение xM » 2016-07-22 10:51:57

stas_sv писал(а): за исключением обработки писем при перетаскивании в папку Junk
https://kostikov.co/post/otlozhennoe-pa ... ya-dovecot
Можно по аналогии переделать вызов под DSPAM.
IT voodoo blog https://kostikov.co

Аватара пользователя
Lazy caT
мл. сержант
Сообщения: 101
Зарегистрирован: 2008-09-11 9:59:17
Откуда: Местные мы...
Контактная информация:

Dspam в качестве демона

Непрочитанное сообщение Lazy caT » 2016-07-28 10:03:17

stas_sv писал(а):Добрый день!
Пересобрал, добил, все работает, за исключением обработки писем при перетаскивании в папку Junk, причем ни Dovecot ни Roundcube.
Кто сталкивался с такой проблемой? Подскажете в куда копать? Конфиги все приведены выше.
Копать нужно в сторону прав на директории почтового ящика и опции при сборке antispam плагина.
И у exim и у dovecot юзер/группа, на создании директорий в почтовом ящике, должны быть одинаковыми.

У меня exim 4.87 + dovecot 1.2.17 + dovecot-antispam-1.3_3,1 + все папки в UTF-7

При сборке плагина:

Код: Выделить всё

[x] DEBUG          Turn on debug information (syslog)
[x] DEBUG_VERBOSE  Turn on verbose debug
[x] DSPAM          Direct dspam training
[ ] MAILTRAIN      send mail to special addresses for training
в конфиге dovecot'а:

Код: Выделить всё


В protocol imap:
  mail_plugins = ... antispam ...
  mail_plugin_dir = /usr/local/lib/dovecot/imap

В plugin
  antispam_debug_target = stdout
  antispam_verbose_debug = 1
  antispam_backend = dspam
  antispam_dspam_binary = /usr/local/bin/dspam
  antispam_dspam_args = --client;--source=error;--user;%u
  antispam_dspam_notspam = --class=innocent
  antispam_dspam_spam = --class=spam
  antispam_spam = '&BB0ENQQ2BDUEOwQwBEIENQQ7BEwEPQQwBE8- &BD8EPgRHBEIEMA-' # Нежелательная почта
  antispam_trash = '&BCMENAQwBDsENQQ9BD0ESwQ1-' # Удаленные
  antispam_dspam_result_header = X-DSPAM-Result
  antispam_signature = X-DSPAM-Signature
  antispam_signature_missing = move

при antispam_debug_target = stdout и antispam_verbose_debug = 1, плагин пишет логи в /var/log/debug.log

При перемещении почты из "Входящих" в папку "Нежелательная почта" в debug.log:

Код: Выделить всё

Jul 26 17:29:08 mailv imap: antispam: plugin initialising (1.3-notgit)
Jul 26 17:29:08 mailv imap: antispam: "&BCMENAQwBDsENQQ9BD0ESwQ1-" is exact match trash folder
Jul 26 17:29:08 mailv imap: antispam: "&BB0ENQQ2BDUEOwQwBEIENQQ7BEwEPQQwBE8- &BD8EPgRHBEIEMA-" is exact match spam folder
Jul 26 17:29:08 mailv imap: antispam: no unsure folders
Jul 26 17:29:08 mailv imap: antispam: dspam binary set to /usr/local/bin/dspam
Jul 26 17:29:08 mailv imap: antispam: dspam result set to X-DSPAM-Result
Jul 26 17:29:08 mailv imap: antispam: dspam extra arg --debug
Jul 26 17:29:08 mailv imap: antispam: dspam extra arg --client
Jul 26 17:29:08 mailv imap: antispam: dspam extra arg --source=error
Jul 26 17:29:08 mailv imap: antispam: dspam extra arg --user
Jul 26 17:29:08 mailv imap: antispam: dspam extra arg {useraccount}
Jul 26 17:29:08 mailv imap: antispam: signature header line is "X-DSPAM-Signature"
Jul 26 17:29:08 mailv imap: antispam: plugin initialising (1.3-notgit)
Jul 26 17:29:08 mailv imap: antispam: "&BCMENAQwBDsENQQ9BD0ESwQ1-" is exact match trash folder
Jul 26 17:29:08 mailv imap: antispam: "&BB0ENQQ2BDUEOwQwBEIENQQ7BEwEPQQwBE8- &BD8EPgRHBEIEMA-" is exact match spam folder
Jul 26 17:29:08 mailv imap: antispam: no unsure folders
Jul 26 17:29:08 mailv imap: antispam: dspam binary set to /usr/local/bin/dspam
Jul 26 17:29:08 mailv imap: antispam: dspam result set to X-DSPAM-Result
Jul 26 17:29:08 mailv imap: antispam: dspam extra arg --debug
Jul 26 17:29:08 mailv imap: antispam: dspam extra arg --client
Jul 26 17:29:08 mailv imap: antispam: dspam extra arg --source=error
Jul 26 17:29:08 mailv imap: antispam: dspam extra arg --user
Jul 26 17:29:08 mailv imap: antispam: dspam extra arg {useraccount}
Jul 26 17:29:08 mailv imap: antispam: signature header line is "X-DSPAM-Signature"
Jul 26 17:29:08 mailv imap: antispam: mailbox_is_unsure(&BB0ENQQ2BDUEOwQwBEIENQQ7BEwEPQQwBE8- &BD8EPgRHBEIEMA-): 0
Jul 26 17:29:08 mailv imap: antispam: mailbox_is_trash(INBOX): 0
Jul 26 17:29:08 mailv imap: antispam: mailbox_is_trash(&BB0ENQQ2BDUEOwQwBEIENQQ7BEwEPQQwBE8- &BD8EPgRHBEIEMA-): 0
Jul 26 17:29:08 mailv imap: antispam: mail copy: from trash: 0, to trash: 0
Jul 26 17:29:08 mailv imap: antispam: mailbox_is_spam(INBOX): 0
Jul 26 17:29:08 mailv imap: antispam: mailbox_is_spam(&BB0ENQQ2BDUEOwQwBEIENQQ7BEwEPQQwBE8- &BD8EPgRHBEIEMA-): 1
Jul 26 17:29:08 mailv imap: antispam: mailbox_is_unsure(INBOX): 0
Jul 26 17:29:08 mailv imap: antispam: mail copy: src spam: 0, dst spam: 1, src unsure: 0
Jul 26 17:29:08 mailv imap: antispam: /usr/local/bin/dspam --source=error --class=spam --signature=47,5790788a9904197910275 --debug --client --source=error --user {useraccount}
В exim вся почта с полем X-DSPAM-Result: Spam кладется сразу в папку "Нежелательная почта". Это исключает излишнее, повторное, обучение DSPAM'а через dovecot+antispam при использовании клиентских фильтров, а так же уменьшает обращения к DSPAM'у, образовании каши в БД DSPAM и излишнего трафика (у меня БД MySQL на отдельном хосте).

Отправлено спустя 3 минуты 15 секунд:
Добавлю.

Если в письме нет X-DSPAM-Signature оно будет в папку спама просто перемещаться при antispam_signature_missing = move:

Код: Выделить всё

Jul 26 17:57:16 mailv imap: antispam: plugin initialising (1.3-notgit)
Jul 26 17:57:16 mailv imap: antispam: "&BCMENAQwBDsENQQ9BD0ESwQ1-" is exact match trash folder
Jul 26 17:57:16 mailv imap: antispam: "&BB0ENQQ2BDUEOwQwBEIENQQ7BEwEPQQwBE8- &BD8EPgRHBEIEMA-" is exact match spam folder
Jul 26 17:57:16 mailv imap: antispam: no unsure folders
Jul 26 17:57:16 mailv imap: antispam: dspam binary set to /usr/local/bin/dspam
Jul 26 17:57:16 mailv imap: antispam: dspam result set to X-DSPAM-Result
Jul 26 17:57:16 mailv imap: antispam: dspam extra arg --debug
Jul 26 17:57:16 mailv imap: antispam: dspam extra arg --client
Jul 26 17:57:16 mailv imap: antispam: dspam extra arg --source=error
Jul 26 17:57:16 mailv imap: antispam: dspam extra arg --user
Jul 26 17:57:16 mailv imap: antispam: dspam extra arg {useraccount}
Jul 26 17:57:16 mailv imap: antispam: signature header line is "X-DSPAM-Signature"
Jul 26 17:57:16 mailv imap: antispam: will silently move mails with missing signature
Отправлено спустя 2 минуты 55 секунд:
и ещё...

В круглокубе для перемещения в папку спама можно добавить плагин "markasjunk".