The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"maildrop и maildropgdbm поделитесь конфигами"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Почта / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"maildrop и maildropgdbm поделитесь конфигами"  +/
Сообщение от Sabakwaka (ok) on 17-Ноя-13, 19:06 
Стоит всякое, в том числе maildrop скомпилированный с поддержкой GDBM и всей нужной AUTH фичей, всё работает просто отлично, прям прекрасно, но разрастаются строки if «ИЛИ» в maildroprc файле. Уходят за горизонт.

Хотелось бы завести GDBM базы со списками доменов, ключевых слов, получателей и проч. для дальнейшего раскладывания maildrop'ом по папочкам.

Честно признаюсь — лень напрягаться, сочиняя maildropfilter конструкцию для maildroprc с использованием maildropgdbm.
Может, у кого-то уже есть, может, кто-то уже пользуется этой фичей maildrop'а?
Поделитесь, пожалуйста.

Типа: письма ото всех отправителей, найденных в базе «kladi_suda.gdbm» складываем в IMAP фолдер «.kladi_suda». В гугле не нашел.

Спасибо.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "maildrop и maildropgdbm поделитесь конфигами"  +/
Сообщение от Sabakwaka (ok) on 18-Ноя-13, 12:14 
Сделал сам. Но тормозит. Появились ощутимые задержки доставки.
Но удобно пополнять базу. Но вернулся к размножению строк в maidroprc — быстрее работает.

Код:

# путь к rc-файлу
# rc-файл инклюдом включен из корневого maildroprc
RC_PATH = "/usr/local/etc/courier/maildroprcs/bla-bla.ru/info/"
# завёл IMAP фолдер aMaildrop, от которого почкуются фолдеры для раскладки писем
# мне удобно так, но часть писем раскладывается в исторические фолдеры, для логики — все равно
SYSMSGS = ".aMaildrop.aSysmsgs/"
# имя файла БД с путем
# БД создается средствами makedat(1)
# из файла формата
# цифра(используется, как KEY) табуляция строка (используется, как VALUE)
# 1     apple.com
# 2     avaz.org
# ... и так далее
SUBJS_2SYSMSGS = $RC_PATH "subj2sysmsgs.gdbm"
# тут любая чушь и чтобы не пустая строка,
# пустая строка возвращается maildropgdbm как «ничего» при выборке из БД
# и используется c «ne» для контроля цикла выборки
GDBM_RESULT="NULL"
# ставим 0 перед каждым входом в цикл выборки из БД
GDBM_KEY = 0

# log для отладки
# лог-файл нужно определить в корневом maildroprc
log "Open DB file $SUBJS_2SYSMSGS"
CONN_RESULT=gdbmopen($SUBJS_2SYSMSGS, R)
log "Conn result is:$CONN_RESULT"
log "Key:$GDBM_KEY value:-$GDBM_RESULT-"

# начинаем  цикл, выбирающий из БД значения по ключу
# ключ —  цифра, значения —  всяки тексты
# внутри цикла GDBM_KEY растет от 1 до конца файла БД
# когда GDBM_KEY больше числа записей, gdbmfetch вернет пустую строку
# и исполнение продлится дальше последней скобки цикла
# в GDBM_RESULT исходно заведомая чушь, исключающая false positives

while ($GDBM_RESULT ne "")
{
    GDBM_KEY = $GDBM_KEY + 1
    GDBM_RESULT=gdbmfetch($GDBM_KEY)
    # для отладки, чё она там читает из БД
    log "Key:$GDBM_KEY value:-$GDBM_RESULT-"

# тут выбираемые поштучно из базы значения
# можно сравнить с чем-нибудь из maildropfilter(7)
# скинуть письмо в куда-то и завершить таким образом rc-файл директивой «to»
# --------------------------------------------------
    if (/^Subject:.*($GDBM_RESULT)/)
            
            {
            gdbmclose
            log "Close current DB file $SUBJS_2SYSMSGS"
            exception {
                      to $DEFAULT/$SYSMSGS
                      }
                      # there is nothing after "to", maildrop stops execution after "to" and exit
            }

# эта фиг скобочка замыкает цикл
}

# если в этом цикле критерий не сработал -- фильтруем дальше,таким же циклом с БД
# или чем еще умеем, не забываем обнулять GDBM_KEY и заносить в  GDBM_RESULT
# заведомую чушь перед началом цикла выборки из следующей БД

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру