LINUX.ORG.RU
ФорумAdmin

Rspamd - автообучение с Dovecot imap_sieve plugin

 , ,


1

1

Когда Dovecot и Rspamd установлены на одном сервере, то используется такая текущая конфигурация плагинов в dovecot.conf

plugin {
    sieve_plugins = sieve_imapsieve sieve_extprograms
    sieve_before = /var/vmail/sieve/global/spam-global.sieve
    sieve = file:/var/vmail/sieve/%d/%n/scripts;active=/var/vmail/sieve/%d/%n/active-script.sieve

    ###
    ### Spam learning
    ###
    # From elsewhere to Spam folder
    imapsieve_mailbox1_name = Spam
    imapsieve_mailbox1_causes = COPY
    imapsieve_mailbox1_before = file:/var/vmail/sieve/global/learn-spam.sieve

    # From Spam folder to elsewhere
    imapsieve_mailbox2_name = *
    imapsieve_mailbox2_from = Spam
    imapsieve_mailbox2_causes = COPY
    imapsieve_mailbox2_before = file:/var/vmail/sieve/global/learn-ham.sieve

    sieve_pipe_bin_dir = /usr/bin
    sieve_global_extensions = +vnd.dovecot.pipe

    quota = maildir:User quota
    quota_exceeded_message = User %u has exhausted allowed storage space.
}

Содержимое sieve скрипта для обучения спама learn-spam.sieve

require ["vnd.dovecot.pipe", "copy", "imapsieve"];
pipe :copy "rspamc" ["learn_spam"];

А как быть в случае если Rspamd установлен на отдельном сервере, а Dovecot c подмонтированным по NFS mail storage на другом сервере? т.е. Dovecot должен передавать данные rspamc для обучения удаленно…

Ответ на: комментарий от BOOBLIK

что нужно установить дополнительно rspamd на сервер с Dovecot только ради наличия rspamc? или возможно использовать не дефолтный Self-scan mode в rspamd, a mirroring или proxy mode?

zorinquen
() автор топика
Ответ на: комментарий от zorinquen

rspamc - это консольный клиент. Он не висит в сети. sieve просто берёт, вызывает его с аргументом learn_spam и суёт письмо на stdin. Ну, т.е. по сути, нужно stdin по сети прокинуть. В этом может помочь netcat. rspamc под netcat-ом будет ждать на другом конце провода.

Это что сходу придумалось. Там уж сообразищь как его «заскриптить» на месте.

SkyMaverick ★★★★★
()
Последнее исправление: SkyMaverick (всего исправлений: 2)
Ответ на: комментарий от SkyMaverick

а такой вариант из мана rspamc:

       -h host[:port], --connect=host[:port]
              Specify host and port

или

       Learn files:

              rspamc -P pass learn_spam file1 file2 file3

только указать c указанием хоста и порта

# rspamc -P pass -h hostname:11334 learn_spam file1 file2 file3

?

zorinquen
() автор топика
Ответ на: комментарий от zorinquen

Я прямо вот в таком варианте не пользовал. Но когда требовался, вроде как работал нормально.

а такой вариант из мана rspamc

только указать c указанием хоста и порта

Нужно, чтобы Давкот пнул rspam, а не наоборот. В скрипте Давкота написано пихать в пайп (man и вообще по всем плагинам). И sieve, наколько я помню, не умеет делать по другому. Там есть действие spamd, но оно немного не про то. Можно, поэкспериментировать, конечно. Но это надо в маны углубляться + ман по sieve вот.

SkyMaverick ★★★★★
()
Последнее исправление: SkyMaverick (всего исправлений: 1)
Ответ на: комментарий от zorinquen

что нужно установить дополнительно rspamd на сервер с Dovecot только ради наличия rspamc?

Да, какие минусы ты тут видишь? Потратить 15 MB дискового пространства? rspamd сервер запускать тебе там не надо. Просто дергай локальный (относительно dovecot) клиент rspamc и указывай ему где его сервер живет в сети.

BOOBLIK ★★★★
()
Последнее исправление: BOOBLIK (всего исправлений: 1)