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

exim, message_size_limit

Добавлено: 2011-02-02 11:02:50
akam
Здравствуйте,

есть роутер,ограничивающий размера письма:

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

message_size_limit:
  driver          = redirect
  condition       = ${if and {\
                            {>{MYSQL_SZ_IN_MSG_MAX}{0}}\
                            {>{$message_size}{MYSQL_SZ_IN_MSG_MAX}}\
                            } }
  data            = :fail:Cannot accept message with body size $message_size bytes for recipient $local_part@$domain (max MYSQL_SZ_IN_MSG_MAX bytes)
  allow_fail
он работает, только ограничивает все, и входящие и исходящие письма.

А как сделать, чтобы ограничивать только исходящие письма на внешние домены, а внутри моего домена, и входящие из внешки не ограничивать? возможно ли вообще такое?

Re: exim, message_size_limit

Добавлено: 2011-02-02 12:21:03
Urgor
У мя примерно так. Авторизованные берут квоту из базы, все остальные 512кб.

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

MYSQL_MESSOUT_QUOTA     = SELECT `quota-out` * 1024 FROM users WHERE id='${quote_mysql:$authenticated_id}'
DEFAULT_MESSOUT_LIMIT   = 512000

acl_check_rcpt:
        warn set acl_m2 = ${lookup mysql{MYSQL_MESSOUT_QUOTA}{${value}}{DEFAULT_MESSOUT_LIMIT}}

acl_check_data:
    deny message       = Message too big. Allowed message size $acl_m2 bytes
         domains        = +local_domains
         condition     = ${if > {$message_size}{$acl_m2}{1}{0}}

Re: exim, message_size_limit

Добавлено: 2011-02-02 14:15:33
akam
а как ты указал domains в acl?

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

temporarily rejected after DATA: cannot test domains condition in DATA ACL

Re: exim, message_size_limit

Добавлено: 2011-02-02 14:40:33
Urgor

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

domainlist local_domains = ${lookup mysql{SELECT domainname FROM domains \
                                WHERE domainname='${domain}' AND \
                                (type='LOCAL' OR type='VIRTUAL') AND \
                                `active`='1'}}

Re: exim, message_size_limit

Добавлено: 2011-02-02 15:39:44
akam
у меня также, но это не суть важно..
Как я понял твой acl тоже ограничивает размер как входящих, так и исходящих писем?

Re: exim, message_size_limit

Добавлено: 2011-02-02 16:01:25
Urgor
Хмм... можно переписать иначе:
m1 - отправитель, если свой или пусто
m3 - домен, если свой или пусто

Если отправитель не пусто и домен пусто -- проверяем квоты

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

        warn set acl_m1 = ${lookup mysql{SELECT id FROM users \
                            WHERE `id`='${quote_mysql:$sender_address}'}}

        warn set acl_m2 = ${lookup mysql{MYSQL_MESSOUT_QUOTA}{${value}}{DEFAULT_MESSOUT_LIMIT}}

        warn set acl_m3 = ${lookup mysql{SELECT domainname FROM domains \
                            WHERE `domainname`='${quote_mysql:$domain}'}}

[......................]

    deny message       = Message too big. Allowed message size $acl_m2 bytes
         condition     = ${if and {{!eq{$acl_m1}{}} \
                                  {eq{$acl_m3}{}}} \
                                  {yes}{no}}
         condition     = ${if > {$message_size}{$acl_m2}{1}{0}}