router для message_size_limit

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
orfan
рядовой
Сообщения: 37
Зарегистрирован: 2008-08-28 8:25:03

router для message_size_limit

Непрочитанное сообщение orfan » 2012-05-02 15:45:08

Заменяю postfix на exim, за основу взял http://www.lissyara.su/articles/freebsd ... x_to_exim/
После замены MTA на exim, почта принимается/отправляется. Но возник вопрос, как поступать с сообщениями, которые по размеру превосходят message_size_limit .
Хочется сделать так, чтобы отправителю отсылался отлуп, что его сообщение больше положенного размера.
Нашел пример роутера

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

ditch_maxmsgsize:
  driver = redirect
  allow_fail
  condition = ${if >{$message_size}{${lookup mysql{select users.maxmsgsize from users,domains \
                where localpart = '${quote_mysql:$local_part}' \
                and domain = '${quote_mysql:$domain}' \
                and users.maxmsgsize > 0 \
                and users.domain_id=domains.domain_id }{${value}K}fail}} {yes}{no}}
  data = :fail:\n\Your message is too big.\n \
                Your message was rejected because the user $local_part@$domain\n \
                does not accept messages larger than \
                ${lookup mysql{select users.maxmsgsize from users,domains \
                where localpart = '${quote_mysql:$local_part}' \
                and domain = '${quote_mysql:$domain}' \
                and users.maxmsgsize > 0 \
                and users.domain_id=domains.domain_id}{${value}K}fail} Kb.
  # local_part_suffix = -*
  # local_part_suffix_optional
  retry_use_local_part
Формат БД, которую использовал ранне postfix, а теперь юзает exim отличается от формата БД, который указан в роутере ditch_maxmsgsize:
condition изменил,

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

ditch_maxmsgsize:
    driver = redirect
    allow_fail
    condition = ${if > {$message_size}{20M}}
    data = :fail:\n\Your message is too big.\n \
    Your message was rejected because the user $local_part@$domain\n \
    does not accept messages larger than 20 M. 
    # local_part_suffix = -*
    # local_part_suffix_optional
      retry_use_local_part
Но роутер не отрабатывает =( сообщения свыше 20М отсылаются. Помогите правильный condition написать.

Хостинговая компания 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/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: router для message_size_limit

Непрочитанное сообщение Alex Keda » 2012-05-03 7:58:47

непонял что вы хотите сделать...
Убей их всех! Бог потом рассортирует...

orfan
рядовой
Сообщения: 37
Зарегистрирован: 2008-08-28 8:25:03

Re: router для message_size_limit

Непрочитанное сообщение orfan » 2012-05-03 10:01:54

Я и сам только разобрался =). Все работает как и должно. Не сразу разобрался кому отлуп должен приходить. =(

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: router для message_size_limit

Непрочитанное сообщение dikens3 » 2012-05-03 15:41:05

Я сразу в сессии выдавал соответствующее сообщение, и никаких рикошетов. На этапе дата всё делается.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

orfan
рядовой
Сообщения: 37
Зарегистрирован: 2008-08-28 8:25:03

Re: router для message_size_limit

Непрочитанное сообщение orfan » 2012-05-03 21:01:32

Можно пример увидеть?

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: router для message_size_limit

Непрочитанное сообщение dikens3 » 2012-05-03 22:02:42

Ограничение на размер входящий сообщений:

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

# Квота на входящее сообщение
MYSQL_SIZEMESS          = SELECT `quota-in` FROM users WHERE username='${quote_mysql:$local_part}' AND domain='${quote_mysql:$domain}'
DEFAULT_SIZE_LIMIT      = 25M
MYSQL_ALIAS_QUOTA       = SELECT `quota-in` FROM users WHERE username=(SELECT recipients FROM aliases WHERE dst_username='${quote_mysql:$local_part}' AND dst_domain='${quote_mysql:$domain}')

# Квота на исходящее сообщение
MYSQL_MESSOUT           = SELECT `quota-out` FROM users WHERE username='${quote_mysql:$local_part}' AND domain='${quote_mysql:$domain}'
DEFAULT_MESSOUT_LIMIT   = 25M


.ifdef MYSQL_SIZEMESS
# Ограничение на приём сообщения для наших пользователей, если сообщение больше определённого размера не принимаем.
  deny    message       = Too big size of message. Message size limit = ${lookup mysql{MYSQL_SIZEMESS}{${value}M}{DEFAULT_SIZE_LIMIT}}.
          domains       = +local_domains
          condition     = ${if > {$message_size}{${lookup mysql{MYSQL_SIZEMESS}{${value}M}{DEFAULT_SIZE_LIMIT}}}}
.endif

.ifdef MYSQL_ALIAS_QUOTA
# Ограничение на приём сообщения для алиасов наших пользователей, если сообщение больше определённого размера не принимаем.
  deny    message       = Too big size of message. Message size limit = ${lookup mysql{MYSQL_ALIAS_QUOTA}{${value}M}{DEFAULT_SIZE_LIMIT}}.
          domains       = +local_domains
          condition     = ${if > {$message_size}{${lookup mysql{MYSQL_ALIAS_QUOTA}{${value}M}{DEFAULT_SIZE_LIMIT}}}}
.endif
Это можно и в rcpt закинуть.


Это прочитай, там и про секцию data есть. Важно понять, что есть esmtp и smtp. В smtp не указывается размер получаемого письма и он будет известен только на этапе data.
http://forum.lissyara.su/viewtopic.php?f=20&t=3326

http://ru.wikipedia.org/wiki/SMTP
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.