Страница 1 из 1

Exim, system_filter, mysql

Добавлено: 2013-03-12 22:16:27
Gamerman
Захотелось мне менять тему в письмах, которые приходят на алиас.
В файле фильтра делаю проверку так,
if $recipients: contains "gamer@dom.com.ua" or
$recipients: contains "it@dom.com.ua"
но хотелось бы не руками писать в файле, а через выборку с мускуля?
Это как-то можно сделать?

Re: Exim, system_filter, mysql

Добавлено: 2014-03-22 19:08:27
Alex Keda
да. точно также, тока запросом
из фильтра можно делать запросы к БД

Re: Exim, system_filter, mysql

Добавлено: 2014-03-22 19:45:20
Gamerman
Примерчик можно? Вид запроса интересует.

Re: Exim, system_filter, mysql

Добавлено: 2014-03-22 21:27:45
Alex Keda
запрос как запрос... в документации есть же всё...

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

mx# cat /usr/local/etc/exim/filters/filter.eliron.2006-08-10
#!/bin/sh
# Это вовсе не шелл-скрипт, просто в mcedit при такой первой строке
# включается подсветка синтаксиса, и работать на порядок удобней :)

############# ELIRON #######################


    # копируем письма. с вирусами нам не нужны.

    # Проверяем, надо ли копировать почту, идущую этому пользователю,
    # на начальственный адрес (единичка в поле `copy_mail` - копировать,
    #  любое другое значение - нет)
    if $recipients is "${lookup mysql{SELECT LCASE(`address`) FROM `alias` WHERE \
                       `address`='${quote_mysql:$recipients}' AND `copy_mail`='1' \
                        AND `domain`='eliron.ru' LIMIT 1}}"
    then
            # кому копируем (можно на локальный адрес, можно на
            # любой другой сервер инета)
            unseen deliver archive-in@eliron.ru
    endif

    # исходящая почта (тут свои косяки - если чел в настройках своего почтового
    # клиента пропишет левый адрес - почта копироваться не будет. Как вариант -
    # отключить приём писем от неавторизованных клиентов, и ловить по переменной
    # $authenticated_sender - но тогда железки не смогут рапортоваться, если им
    # нужно, наружу... Впрочем, у меня они на этот сервер пишут...)
    if $sender_address is "${lookup mysql{SELECT LCASE(`address`) FROM `alias` WHERE \
                       `address`='${quote_mysql:$sender_address}' AND `copy_mail`='1' \
                        AND `domain`='eliron.ru' LIMIT 1}}"
    then
            # кому копируем (можно на локальный адрес, можно на
            # любой другой сервер инета)
            unseen deliver archive-out@eliron.ru
    endif

Re: Exim, system_filter, mysql

Добавлено: 2014-03-22 21:28:32
Alex Keda
блин, когда-то я mcedit юзал =))

Re: Exim, system_filter, mysql

Добавлено: 2014-03-22 21:53:45
Gamerman
Спасибо

Exim, system_filter, mysql

Добавлено: 2024-05-17 13:31:28
Urgor
Оказывается $recipients может содержать сразу несколько адресов... Да и окончание 's' нам на это как-то напоминает... Но кто бы мог подумать что так и будет! :) И естессно почта где много получателей игнорится фильтром...
Вообщем пришлось переделать как-то так:

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

if $recipients contains "${lookup mysql{select `email` from `copy_list` where locate(`email`,'${quote_mysql:$recipients}')>0 and `enabled`='Y' limit 1}}"
then
    unseen save /shared/mail/backup 640
endif
`copy_list` табличка с перечнем е-мылов, где есть как просто мыла так и домены. Соответственно можно копировать почту уходящую на какой-нить домен всю целюком... Вотъ. Может кому понадобиться.

Exim, system_filter, mysql

Добавлено: 2024-05-19 20:31:15
Alex Keda
Urgor писал(а):
2024-05-17 13:31:28
Оказывается $recipients может содержать сразу несколько адресов... Да и окончание 's' нам на это как-то напоминает... Но кто бы мог подумать что так и будет! :) И естессно почта где много получателей игнорится фильтром...
18 лет прошло, точно не помню - но помоему, там в конфиге было max_recipients = 1 чтоли
непомню точно, но смысл такой

собственно да, грабли вылези на первом же письме более чем с одним получателем =)
вот это как раз помню =)