exim, message_size_limit

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
akam
проходил мимо

exim, message_size_limit

Непрочитанное сообщение akam » 2011-02-02 11:02:50

Здравствуйте,

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

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

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
он работает, только ограничивает все, и входящие и исходящие письма.

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

Хостинговая компания 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/
Выделенные сервера, Россия, Москва, от 2520 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Urgor
лейтенант
Сообщения: 662
Зарегистрирован: 2006-03-14 16:30:18
Откуда: Гилея (СПб)
Контактная информация:

Re: exim, message_size_limit

Непрочитанное сообщение Urgor » 2011-02-02 12:21:03

У мя примерно так. Авторизованные берут квоту из базы, все остальные 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}}
Власть в руках у чужаков, и ты им платишь дань...

akam
проходил мимо

Re: exim, message_size_limit

Непрочитанное сообщение akam » 2011-02-02 14:15:33

а как ты указал domains в acl?

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

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

Аватара пользователя
Urgor
лейтенант
Сообщения: 662
Зарегистрирован: 2006-03-14 16:30:18
Откуда: Гилея (СПб)
Контактная информация:

Re: exim, message_size_limit

Непрочитанное сообщение Urgor » 2011-02-02 14:40:33

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

domainlist local_domains = ${lookup mysql{SELECT domainname FROM domains \
                                WHERE domainname='${domain}' AND \
                                (type='LOCAL' OR type='VIRTUAL') AND \
                                `active`='1'}}
Власть в руках у чужаков, и ты им платишь дань...

akam
проходил мимо

Re: exim, message_size_limit

Непрочитанное сообщение akam » 2011-02-02 15:39:44

у меня также, но это не суть важно..
Как я понял твой acl тоже ограничивает размер как входящих, так и исходящих писем?

Аватара пользователя
Urgor
лейтенант
Сообщения: 662
Зарегистрирован: 2006-03-14 16:30:18
Откуда: Гилея (СПб)
Контактная информация:

Re: exim, message_size_limit

Непрочитанное сообщение Urgor » 2011-02-02 16:01:25

Хмм... можно переписать иначе:
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}}
Власть в руках у чужаков, и ты им платишь дань...