Уважаемые гуру!!!
Посоветуйте как сделать настройку postfix,
для одного из пользователей, чтобы для него
не примимались(отвергались) письма,
если объем вложений в него превышает скажем 100кб.
Заранее спасибо.
Можно либо через check_policy_service (для ограничения клиентов работающих по SMTP вам придется поставить snapshot тк в 2.1 нет smtpd_end_of_data_restrictions), либо через before queue фильтр.
message_size_limit 1000000
Устанавливается ограничение в 1 Мб на размер письма
>message_size_limit 1000000
>Устанавливается ограничение в 1 Мб на размер письма
Вы читать умеете?
Спрашивавший хочет такое:
для vova@ 1Mb
для sasha@ 2Mb
для dima@ 10Mb
Через message_size_limit это не возможно.
>>message_size_limit 1000000
>>Устанавливается ограничение в 1 Мб на размер письма
>Вы читать умеете?
>Спрашивавший хочет такое:
>для vova@ 1Mb
>для sasha@ 2Mb
>для dima@ 10Mb
>Через message_size_limit это не возможно.А вы в курсе что принять всё таки письмо придётся полностью и только потом если оно не входит в лимиты его удалять....
>А вы в курсе что принять всё таки письмо придётся полностью и
>только потом если оно не входит в лимиты его удалять....
В случае ESMTP + корректный "SIZE=" письмо полностью принято не будет, а это большенство коннектов.
>>А вы в курсе что принять всё таки письмо придётся полностью и
>>только потом если оно не входит в лимиты его удалять....
>В случае ESMTP + корректный "SIZE=" письмо полностью принято не будет, а
>это большенство коннектов.Что-то мне кажетя что size это для клиентов и зависит от клиента учитывать его или нет. И если клиент его не учёл, а данные начали передаваться после команды data, то они уже не прервутся. Но даже если это не так, и я ошибаюсь, то size отдаётся ещё до того, когда будет ясно в какой ящик письмо должно попасть, то бишь для разных пользователей нельзя задать разный size.
>Что-то мне кажетя что 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 этого достаточно для большенства случаев.
>Про 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 сам посчитал?
>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.
>1) Клиент сказал EHLO
>2) Сервер в ответ выдал список поддерживаемых расширений ESMTP
>3) Клиент сказал добавил SIZE к "MAIL FROM"
>4) Клиент сказал "RCPT TO"
>Вот здесь по лимиту для envelope recipient можно принять решение рвать сессию или нет.
Осталось понять, как в postfix 2.1.5 этим воспользоваться, а то VDA патч работает не на основе этих данных и сначала всё принимает, а потом думает. А вот если решить проблему не принимать письма больше чем положено, то решило бы мои многие проблемы, так как трафик у нас не анлим. :-(
>Осталось понять, как в postfix 2.1.5 этим воспользоваться, а то VDA патч
>работает не на основе этих данных и сначала всё принимает, а
>потом думает. А вот если решить проблему не принимать письма больше
>чем положено, то решило бы мои многие проблемы, так как трафик
>у нас не анлим. :-(Ответ уже был: это можно сделать через check_policy_service или через
before queue фильтр.
Сам postfix такого не умеет.
>>Осталось понять, как в postfix 2.1.5 этим воспользоваться, а то VDA патч
>>работает не на основе этих данных и сначала всё принимает, а
>>потом думает. А вот если решить проблему не принимать письма больше
>>чем положено, то решило бы мои многие проблемы, так как трафик
>>у нас не анлим. :-(
>
>Ответ уже был: это можно сделать через check_policy_service или через
>before queue фильтр.
>Сам postfix такого не умеет.Для check_policy_service нужно 2.2, так вы писали...
А вот before queue - это самому писать или есть готовый? Я так понял, что его задача висеть на 25 порту и принимать всё, что передаёт клиент, а фильтр в свою очередь передаёт это postfix-у. Где можно про него почитать?? Как реализоввывать?
>Для 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
>Нет, 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
Спасибо.
>Получается что, check_policy_service можно и на 2.1 ипользовать, а уж если "SIZE
>был не известен/неверен" то путь разбирается патч VDA.
Это разные вещи... Все зависит от того что вы хотите сделать и выбранного метода.
Почему вы так боитесь 2.2 ветки???
>Сажем постфикс можно настроить на 127.0.0.1:25 а фильтр уже прибиндить куда нужно.
Можно. Только "before queue" в терминах postfix выглядит так:
smtpd->filter->smtpd->cleanup...
>Это разные вещи... Все зависит от того что вы хотите сделать и
>выбранного метода.
Я понимаю что это разные вещи, я это сказал к тому, что если большое сообщение не отвергнет 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> или по мере поступления их (данных).
>Я понимаю что это разные вещи, я это сказал к тому, что
>если большое сообщение не отвергнет 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.
Я столкнулся с той же проблемой в ограничении почтового траффика. Только тогда еще совсем плохо понимал всю эту схему поэтому объединил after фильтр и социальную инженерию.;) Проще говоря фильтр принимал почту всю как есть, только если размер превысил для этого получателя его лимит - фильтр пишет в логе о том , что был превышен лимит сообщения и далее админ(то есть я) применяет вторую часть фильтра - наказательную, идет и стучит по репе нарушителю с угрозой о снятии ящика. Щас больше проблем с получением слишком больших писем не имею, хотя способ корявый, но сработал на ура.
>Это совсем разные вещи:
>1)VDA работает с квотами на ящик, мы же говорим о ограничениях на
>размер письма (т.е. квот на ящик может не быть вообще)
Скажем так, я за то, чтобы пользователь мог получать письмо любого размера, главное чтоб ящик не переполнял, то бишь если у пользователя в ящике нет ни одного письма, то ему могут прислать одно письмо равное квоте на почтовый ящик. То есть в polyce сервере, можно реализовать такое, чтобы при получении size, суммировалось с тем, что уже в ящике лежит, и если это превышает квоту, то делать reject. Ну и в этом же сервере сделать ограничение на кол-во Мб на конкретного пользователя в час/сутки/месяц.
>3) Если у вас есть policy сервер, то VDA как бы становиться лишней сущьностью.
Как раз VDA нужен, если вдруг SIZE не передали/передали не верный, и у нас не 2.2 в котором есть end_of_data :-)
>Мне кажется, что написать/подправить policy server легче, чем сделать тоже самое с smtp proxy.
Вы правы.
>>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 во время сессии, а не посылать отлуп.
>>А вы в курсе что принять всё таки письмо придётся полностью и
>>только потом если оно не входит в лимиты его удалять....
>В случае ESMTP + корректный "SIZE=" письмо полностью принято не будет, а
>это большенство коннектов.SIZE становится известен только после того как письмо доставлено. Как уже сказали, MTA отправителя не обязан говорить SIZE до начала отправки.
>>В случае ESMTP + корректный "SIZE=" письмо полностью принято не будет, а
>>это большенство коннектов.
>SIZE становится известен только после того как письмо доставлено. Как уже сказали,
>MTA отправителя не обязан говорить SIZE до начала отправки.
Вы читать умеете???
Если все-таки да, то читайте верхню строчку до полного просветления.
Могу еще раз поторить. Разговор ТОЛЬКО о ESMTP с переданным SIZE в "MAIL FROM". Да клиент не обязан, но все MUA и подавляющие число MTA работают по ESMTP и SIZE говорят.