URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 52540
[ Назад ]

Исходное сообщение
"Ограничение размера письма в postfix"

Отправлено Игорь , 19-Янв-05 06:58 
Уважаемые гуру!!!
Посоветуйте как сделать настройку postfix,
для одного из пользователей, чтобы для него
не примимались(отвергались) письма,
если объем вложений в него превышает скажем 100кб.
Заранее спасибо.

Содержание

Сообщения в этом обсуждении
"Ограничение размера письма в postfix"
Отправлено unk , 19-Янв-05 10:08 
Можно либо через check_policy_service (для ограничения клиентов работающих по SMTP вам придется поставить snapshot тк в 2.1 нет smtpd_end_of_data_restrictions), либо через before queue фильтр.

"Ограничение размера письма в postfix"
Отправлено rtzra , 19-Янв-05 10:13 
message_size_limit 1000000
Устанавливается ограничение в 1 Мб на размер письма

"Ограничение размера письма в postfix"
Отправлено unk , 19-Янв-05 10:30 
>message_size_limit 1000000
>Устанавливается ограничение в 1 Мб на размер письма
Вы читать умеете?
Спрашивавший хочет такое:
для vova@ 1Mb
для sasha@ 2Mb
для dima@ 10Mb
Через message_size_limit это не возможно.

"Ограничение размера письма в postfix"
Отправлено Гость , 19-Янв-05 11:10 
>>message_size_limit 1000000
>>Устанавливается ограничение в 1 Мб на размер письма
>Вы читать умеете?
>Спрашивавший хочет такое:
>для vova@ 1Mb
>для sasha@ 2Mb
>для dima@ 10Mb
>Через message_size_limit это не возможно.

А вы в курсе что принять всё таки письмо придётся полностью и только потом если оно не входит в лимиты его удалять....


"Ограничение размера письма в postfix"
Отправлено unk , 19-Янв-05 11:14 
>А вы в курсе что принять всё таки письмо придётся полностью и
>только потом если оно не входит в лимиты его удалять....
В случае ESMTP + корректный "SIZE=" письмо полностью принято не будет, а это большенство коннектов.

"Ограничение размера письма в postfix"
Отправлено Гость , 19-Янв-05 12:50 
>>А вы в курсе что принять всё таки письмо придётся полностью и
>>только потом если оно не входит в лимиты его удалять....
>В случае ESMTP + корректный "SIZE=" письмо полностью принято не будет, а
>это большенство коннектов.

Что-то мне кажетя что size это для клиентов и зависит от клиента учитывать его или нет. И если клиент его не учёл, а данные начали передаваться после команды data, то они уже не прервутся. Но даже если это не так, и я ошибаюсь, то size отдаётся ещё до того, когда будет ясно в какой ящик письмо должно попасть, то бишь для разных пользователей нельзя задать разный size.


"Ограничение размера письма в postfix"
Отправлено unk , 19-Янв-05 13:12 
>Что-то мне кажетя что size это для клиентов и зависит от клиента
>учитывать его или нет. И если клиент его не учёл, а
>данные начали передаваться после команды data, то они уже не прервутся.
Про SIZE у вас какая-то каша (возможно вы путаете SIZE в ответе сервера на EHLO и SIZE в запросе "MAIL FROM" клиента:
1) Клиент сказал EHLO
2) Сервер в ответ выдал список поддерживаемых расширений ESMTP
3) Клиент сказал добавил SIZE к "MAIL FROM"
4) Клиент сказал "RCPT TO"
Вот здесь по лимиту для envelope recipient можно принять решение рвать сессию или нет.

>Но даже если это не так, и я ошибаюсь, то size
>отдаётся ещё до того, когда будет ясно в какой ящик письмо
>должно попасть, то бишь для разных пользователей нельзя задать разный size.
Мы знаем envelop sender/recipient этого достаточно для большенства случаев.


"Ограничение размера письма в postfix"
Отправлено Гость , 19-Янв-05 13:54 
>Про SIZE у вас какая-то каша (возможно вы путаете SIZE в ответе
>сервера на EHLO и SIZE в запросе "MAIL FROM" клиента:
Точно, путаю, спасибо за разьяснения, не знал что size передаётся в "MAIL FROM".
>1) Клиент сказал EHLO
>2) Сервер в ответ выдал список поддерживаемых расширений ESMTP
>3) Клиент сказал добавил SIZE к "MAIL FROM"
SIZE не обязательный... Интересно, например mail.ru его отдаёт?
>4) Клиент сказал "RCPT TO"
>Вот здесь по лимиту для envelope recipient можно принять решение рвать сессию
>или нет.
>
>>Но даже если это не так, и я ошибаюсь, то size
>>отдаётся ещё до того, когда будет ясно в какой ящик письмо
>>должно попасть, то бишь для разных пользователей нельзя задать разный size.
>Мы знаем envelop sender/recipient этого достаточно для большенства случаев.
Вот теперь сижу и думаю, в логах postfix в строке:
Jan 19 13:47:00 domain postfix/qmgr[8722]: EFEF95C326: from=<1144486870172391611@fwd.yandex.ru>, size=3821, nrcpt=1 (queue active)
SIZE это то, что сообщил yandex в "MAIL FROM" или то, что postfix сам посчитал?

"Ограничение размера письма в postfix"
Отправлено unk , 19-Янв-05 14:03 
>SIZE не обязательный... Интересно, например mail.ru его отдаёт?
Да.

>Вот теперь сижу и думаю, в логах postfix в строке:
>Jan 19 13:47:00 domain postfix/qmgr[8722]: EFEF95C326: from=<1144486870172391611@fwd.yandex.ru>, size=3821, nrcpt=1 (queue active)
>SIZE это то, что сообщил yandex в "MAIL FROM" или то, что
>postfix сам посчитал?
Сам посчитал.
Если хотите посмотреть на SIZE переданный клиентом, то включите debug.


"Ограничение размера письма в postfix"
Отправлено Andrey , 19-Янв-05 14:06 
>1) Клиент сказал EHLO
>2) Сервер в ответ выдал список поддерживаемых расширений ESMTP
>3) Клиент сказал добавил SIZE к "MAIL FROM"
>4) Клиент сказал "RCPT TO"
>Вот здесь по лимиту для envelope recipient можно принять решение рвать сессию или нет.
Осталось понять, как в postfix 2.1.5 этим воспользоваться, а то VDA патч работает не на основе этих данных и сначала всё принимает, а потом думает. А вот если решить проблему не принимать письма больше чем положено, то решило бы мои многие проблемы, так как трафик у нас не анлим. :-(

"Ограничение размера письма в postfix"
Отправлено unk , 19-Янв-05 14:10 
>Осталось понять, как в postfix 2.1.5 этим воспользоваться, а то VDA патч
>работает не на основе этих данных и сначала всё принимает, а
>потом думает. А вот если решить проблему не принимать письма больше
>чем положено, то решило бы мои многие проблемы, так как трафик
>у нас не анлим. :-(

Ответ уже был: это можно сделать через check_policy_service или через
before queue фильтр.
Сам postfix такого не умеет.


"Ограничение размера письма в postfix"
Отправлено Andrey , 19-Янв-05 14:21 
>>Осталось понять, как в postfix 2.1.5 этим воспользоваться, а то VDA патч
>>работает не на основе этих данных и сначала всё принимает, а
>>потом думает. А вот если решить проблему не принимать письма больше
>>чем положено, то решило бы мои многие проблемы, так как трафик
>>у нас не анлим. :-(
>
>Ответ уже был: это можно сделать через check_policy_service или через
>before queue фильтр.
>Сам postfix такого не умеет.

Для check_policy_service нужно 2.2, так вы писали...
А вот before queue - это самому писать или есть готовый? Я так понял, что его задача висеть на 25 порту и принимать всё, что передаёт клиент, а фильтр в свою очередь передаёт это postfix-у. Где можно про него почитать?? Как реализоввывать?


"Ограничение размера письма в postfix"
Отправлено unk , 19-Янв-05 14:33 
>Для check_policy_service нужно 2.2, так вы писали...
Нет, 2.2 нужен для smtpd_end_of_data_restrictions. Что бы отработать случаи в которых SIZE= был не известен/неверен.

>А вот before queue - это самому писать или есть готовый? Я
Готового с такой фишкой не знаю.

>так понял, что его задача висеть на 25 порту и принимать
Если порт=25, то нужен отдельный тазик т.к. на "нашем" этот порт уже занят postfix'ом

>всё, что передаёт клиент, а фильтр в свою очередь передаёт это
>postfix-у. Где можно про него почитать?? Как реализоввывать?
Прочитать тут: http://www.postfix.org/SMTPD_PROXY_README.html


"Ограничение размера письма в postfix"
Отправлено Andrey , 19-Янв-05 15:23 
>Нет, 2.2 нужен для smtpd_end_of_data_restrictions. Что бы отработать случаи в которых SIZE=был не известен/неверен.
Получается что, check_policy_service можно и на 2.1 ипользовать, а уж если "SIZE был не известен/неверен" то путь разбирается патч VDA.
>Если порт=25, то нужен отдельный тазик т.к. на "нашем" этот порт уже
>занят postfix'ом
Сажем постфикс можно настроить на 127.0.0.1:25 а фильтр уже прибиндить куда нужно.
>Прочитать тут: http://www.postfix.org/SMTPD_PROXY_README.html
Спасибо.

"Ограничение размера письма в postfix"
Отправлено unk , 19-Янв-05 15:30 
>Получается что, check_policy_service можно и на 2.1 ипользовать, а уж если "SIZE
>был не известен/неверен" то путь разбирается патч VDA.
Это разные вещи... Все зависит от того что вы хотите сделать и выбранного метода.
Почему вы так боитесь 2.2 ветки???


>Сажем постфикс можно настроить на 127.0.0.1:25 а фильтр уже прибиндить куда нужно.
Можно. Только "before queue" в терминах postfix выглядит так:
smtpd->filter->smtpd->cleanup...


"Ограничение размера письма в postfix"
Отправлено Andrey , 19-Янв-05 16:29 
>Это разные вещи... Все зависит от того что вы хотите сделать и
>выбранного метода.
Я понимаю что это разные вещи, я это сказал к тому, что если большое сообщение не отвергнет check_policy_service, по выше написанным причинам (неверный или нет SIZE), то после получения письма, пусть тогда уже VDA его удаляет. Я думаю таких сообщений не много будет которые придётся удалять поле получения.

>Почему вы так боитесь 2.2 ветки???
Наверное предраудки... Даже сам автор говорит, что 2.2 уже можно использовать без проблем.
>
>>Сажем постфикс можно настроить на 127.0.0.1:25 а фильтр уже прибиндить куда нужно.
>Можно. Только "before queue" в терминах postfix выглядит так:
>smtpd->filter->smtpd->cleanup...
Только в этой схеме я немного не понимаю, когда данные от клиента  передаются в filter, когда от клиента поступает <CR><LF>.<CR><LF> или по мере поступления их (данных).


"Ограничение размера письма в postfix"
Отправлено unk , 19-Янв-05 17:19 
>Я понимаю что это разные вещи, я это сказал к тому, что
>если большое сообщение не отвергнет check_policy_service, по выше написанным причинам (неверный
>или нет SIZE), то после получения письма, пусть тогда уже VDA
>его удаляет. Я думаю таких сообщений не много будет которые придётся
>удалять поле получения.
Это совсем разные вещи:
1)VDA работает с квотами на ящик, мы же говорим о ограничениях на размер письма (т.е. квот на ящик может не быть вообще)
2)end_of_data отработает во время smtp сессии т.е. мы можем сказать 5xx (c VDA мы можем послать отлуп или молча похерить письмо)
3) Если у вас есть policy сервер, то VDA как бы становиться лишней сущьностью.

>>Можно. Только "before queue" в терминах postfix выглядит так:
>>smtpd->filter->smtpd->cleanup...
>Только в этой схеме я немного не понимаю, когда данные от клиента  передаются в filter, когда от клиента поступает <CR><LF>.<CR><LF> или по мере поступления их (данных).
В зовисимости от стадии smtp сеанса - рассказавать долго, прочитайте мануал, а подробности в src/smtpd/smtpd.c
Будут непонятные моменты - давайте обсудим.

Мне кажется, что написать/подправить policy server легче, чем сделать тоже самое с smtp proxy.


"Ограничение размера письма в postfix"
Отправлено Forth , 27-Янв-05 11:49 
Я столкнулся с той же проблемой в ограничении почтового траффика. Только тогда еще совсем плохо понимал всю эту схему поэтому объединил after фильтр и социальную инженерию.;) Проще говоря фильтр принимал почту всю как есть, только если размер превысил для этого получателя его лимит - фильтр пишет в логе о том , что был превышен лимит сообщения и далее админ(то есть я) применяет вторую часть фильтра - наказательную, идет и стучит по репе нарушителю с угрозой о снятии ящика. Щас больше проблем с получением слишком больших писем не имею, хотя способ корявый, но сработал на ура.

"Ограничение размера письма в postfix"
Отправлено Гость , 28-Янв-05 00:30 
>Это совсем разные вещи:
>1)VDA работает с квотами на ящик, мы же говорим о ограничениях на
>размер письма (т.е. квот на ящик может не быть вообще)
Скажем так, я за то, чтобы пользователь мог получать письмо любого размера, главное чтоб ящик не переполнял, то бишь если у пользователя в ящике нет ни одного письма, то ему могут прислать одно письмо равное квоте на почтовый ящик. То есть в polyce сервере, можно реализовать такое, чтобы при получении size, суммировалось с тем, что уже в ящике лежит, и если это превышает квоту, то делать reject. Ну и в этом же сервере сделать ограничение на кол-во Мб на конкретного пользователя в час/сутки/месяц.
>3) Если у вас есть policy сервер, то VDA как бы становиться лишней сущьностью.
Как раз VDA нужен, если вдруг SIZE не передали/передали не верный, и у нас не 2.2 в котором есть end_of_data :-)
>Мне кажется, что написать/подправить policy server легче, чем сделать тоже самое с smtp proxy.
Вы правы.

"Ограничение размера письма в postfix"
Отправлено unk , 28-Янв-05 09:17 
>>3) Если у вас есть policy сервер, то VDA как бы становиться лишней сущьностью.
>Как раз VDA нужен, если вдруг SIZE не передали/передали не верный, и
>у нас не 2.2 в котором есть end_of_data :-)
При таких условиях да.
Но IMHO лучше поставить 2.2/сделать backport в 2.1 для EOD, чем использовать VDA патч т.к.:
1) такое решение будет универсальние: можно использовать любой delivery agent, а не только virtual(8).  
2) Следствие из [1]: можно разнести MXсер и imap/pop на разные машины.
3) Можно сказать клиенту 4xx/5xx во время сессии, а не посылать отлуп.

"Ограничение размера письма в postfix"
Отправлено Varyag , 28-Янв-05 12:57 
>>А вы в курсе что принять всё таки письмо придётся полностью и
>>только потом если оно не входит в лимиты его удалять....
>В случае ESMTP + корректный "SIZE=" письмо полностью принято не будет, а
>это большенство коннектов.

SIZE становится известен только после того как письмо доставлено. Как уже сказали, MTA отправителя не обязан говорить SIZE до начала отправки.


"Ограничение размера письма в postfix"
Отправлено unk , 28-Янв-05 13:26 
>>В случае ESMTP + корректный "SIZE=" письмо полностью принято не будет, а
>>это большенство коннектов.
>SIZE становится известен только после того как письмо доставлено. Как уже сказали,
>MTA отправителя не обязан говорить SIZE до начала отправки.
Вы читать умеете???
Если все-таки да, то читайте верхню строчку до полного просветления.
Могу еще раз поторить. Разговор ТОЛЬКО о ESMTP с переданным SIZE в "MAIL FROM". Да клиент не обязан, но все MUA и подавляющие число MTA работают по ESMTP и SIZE говорят.