{"id":2472,"date":"2017-10-12T20:40:05","date_gmt":"2017-10-12T20:40:05","guid":{"rendered":"https:\/\/tst-amo.pp.ua\/blog\/?p=2472"},"modified":"2017-10-13T06:56:13","modified_gmt":"2017-10-13T06:56:13","slug":"dovecot-quotes-%d1%81-%d0%be%d1%82%d0%bf%d1%80%d0%b0%d0%b2%d0%ba%d0%be%d0%b9-%d1%83%d0%b2%d0%b5%d0%b4%d0%be%d0%bc%d0%bb%d0%b5%d0%bd%d0%b8%d0%b9","status":"publish","type":"post","link":"https:\/\/tst-amo.net.ua\/blog\/?p=2472","title":{"rendered":"Dovecot + quotes (\u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439)"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u0439 \u043f\u0440\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u043a\u0432\u043e\u0442\u044b<\/p>\n<pre>ee \/usr\/local\/etc\/dovecot\/conf.d\/90-quota.conf<\/pre>\n<pre>plugin {\r\n quota = maildir:User quota\r\n quota_rule = *:storage=500M\r\n quota_rule2 = Trash:storage=+100M\r\n quota_rule3 = Junk:ignore\r\n quota_grace = 10%%\r\n\r\n # Quota plugin can also limit the maximum accepted mail size.\r\n #quota_max_mail_size = 100M\r\n}\r\n\r\n# \u041e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c SQL \u0441\u043b\u043e\u0432\u0430\u0440\u044c\r\ndict {\r\n sqlquota = mysql:\/usr\/local\/etc\/dovecot\/dovecot-dict-sql.conf.ext\r\n}\r\n\r\nplugin {\r\n quota_warning = storage=95%% quota-warning 95 %u\r\n quota_warning2 = storage=80%% quota-warning 80 %u\r\n quota_warning3 = storage=70%% quota-warning 70 %u\r\n quota_warning4 = storage=60%% quota-warning 60 %u\r\n quota_warning5 = storage=50%% quota-warning 50 %u\r\n}\r\nservice quota-warning {\r\n executable = script \/usr\/local\/bin\/quota-warning.sh\r\n unix_listener quota-warning {\r\n    user = nobody\r\n    group = nobody\r\n    mode = 0666\r\n    }\r\n #user = dovecot\r\n}\r\n\r\n############# \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u044e ###########\r\nservice quota-warning {\r\n\u00a0 executable = script \/etc\/dovecot\/quota-warning.sh\r\n\u00a0 unix_listener quota-warning {\r\n \u00a0 \u00a0 \u00a0 \u00a0user = vmail\r\n \u00a0 \u00a0 \u00a0 \u00a0group = mail\r\n \u00a0 \u00a0 \u00a0 \u00a0mode = 0660\r\n \u00a0 \u00a0 \u00a0 \u00a0}\r\n}\r\n\r\nservice quota-exceeded {\r\n\u00a0 executable = script \/etc\/dovecot\/quota-exceeded.sh\r\n\u00a0 unix_listener quota-exceeded {\r\n \u00a0 \u00a0 \u00a0 \u00a0user = vmail\r\n \u00a0 \u00a0 \u00a0 \u00a0group = mail\r\n \u00a0 \u00a0 \u00a0 \u00a0mode = 0660\r\n \u00a0 \u00a0 \u00a0 \u00a0}\r\n}\r\n\r\nplugin {\r\n\u00a0 \u00a0 quota = dict:User quota::proxy::quota\r\n\u00a0 \u00a0 quota_warning = storage=100%% quota-exceeded 100 %u\r\n\u00a0 \u00a0 quota_warning2 = storage=90%% quota-warning 90 %u\r\n\u00a0 \u00a0 quota_warning3 = storage=80%% quota-warning 50 %u\r\n }\r\n \r\nservice quota-warning {\r\n\u00a0 executable = script \/etc\/dovecot\/quota-warning.sh\r\n\u00a0 unix_listener quota-warning {\r\n\u00a0 \u00a0 \u00a0 \u00a0user = vmail\r\n\u00a0 \u00a0 \u00a0 \u00a0group = mail\r\n\u00a0 \u00a0 \u00a0 \u00a0mode = 0660\r\n\u00a0 \u00a0 \u00a0 \u00a0}\r\n}\r\n \r\nservice quota-exceeded {\r\n\u00a0 \u00a0executable = script \/etc\/dovecot\/quota-exceeded.sh\r\n\u00a0 \u00a0unix_listener quota-exceeded {\r\n\u00a0 \u00a0 \u00a0 \u00a0user = vmail\r\n\u00a0 \u00a0 \u00a0 \u00a0group = mail\r\n\u00a0 \u00a0 \u00a0 \u00a0mode = 0660\r\n\u00a0 \u00a0 \u00a0 \u00a0}\r\n}<\/pre>\n<p>####################<\/p>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442:<\/p>\n<pre>cat \/usr\/local\/bin\/quota-warning.sh<\/pre>\n<pre>#!\/bin\/sh\r\nPERCENT=$1\r\nUSER=$2\r\ncat &lt;&lt; EOF | \/usr\/local\/libexec\/dovecot\/dovecot-lda -d $USER -o \"plugin\/quota=maildir:User quota:noenforcing\"\r\nFrom: postmaster@uni.ka\r\nSubject: quota warning\r\nContent-Type: text\/plain; charset=utf-8\r\nContent-Transfer-Encoding: 8bit\r\nTo: $USER\r\n\r\n\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435!\r\n\u0412\u0430\u0448 \u044f\u0449\u0438\u043a \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d \u043d\u0430 $PERCENT%.\r\n\r\nAttention!\r\nYour mailbox is now $PERCENT% full.\r\nEOF<\/pre>\n<p>\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043a\u0432\u043e\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 WEB-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 PostfixAdmin)<\/p>\n<pre>doveadm quota get -u acc@uni.ka<\/pre>\n<p>\u041f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u0432\u043e\u0442\u0443 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f<\/p>\n<pre>doveadm quota recalc -u acc@uni.ka<\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/p>\n<pre>\/usr\/local\/bin\/quota-warning.sh 85% acc@uni.ka<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/kamaok.org.ua\/?p=2189\">\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a<\/a><\/p>\n<div class=\"pdfprnt-buttons pdfprnt-buttons-post pdfprnt-bottom-right\"><a href=\"https:\/\/tst-amo.net.ua\/blog\/index.php?rest_route=wpv2posts2472&print=pdf\" class=\"pdfprnt-button pdfprnt-button-pdf\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/tst-amo.net.ua\/blog\/wp-content\/plugins\/pdf-print\/images\/pdf.png\" alt=\"image_pdf\" title=\"View PDF\" \/><\/a><a href=\"https:\/\/tst-amo.net.ua\/blog\/index.php?rest_route=wpv2posts2472&print=print\" class=\"pdfprnt-button pdfprnt-button-print\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/tst-amo.net.ua\/blog\/wp-content\/plugins\/pdf-print\/images\/print.png\" alt=\"image_print\" title=\"Print Content\" \/><\/a><\/div>","protected":false},"excerpt":{"rendered":"<p>&nbsp; \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u0439 \u043f\u0440\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u043a\u0432\u043e\u0442\u044b ee \/usr\/local\/etc\/dovecot\/conf.d\/90-quota.conf plugin { quota = maildir:User quota quota_rule = *:storage=500M quota_rule2 = Trash:storage=+100M quota_rule3 = Junk:ignore quota_grace = 10%% # Quota plugin can also limit the maximum accepted mail size. #quota_max_mail_size = 100M } # \u041e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c SQL \u0441\u043b\u043e\u0432\u0430\u0440\u044c dict { sqlquota = mysql:\/usr\/local\/etc\/dovecot\/dovecot-dict-sql.conf.ext } plugin { quota_warning = &#8230;<\/p>\n<p><a href=\"https:\/\/tst-amo.net.ua\/blog\/?p=2472\" class=\"more-link\">Continue reading &lsquo;Dovecot + quotes (\u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439)&rsquo; &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,50,33,7,97],"tags":[],"class_list":["post-2472","post","type-post","status-publish","format-standard","hentry","category-dovecot","category-freebsd","category-imap","category-mail","category-quotes"],"_links":{"self":[{"href":"https:\/\/tst-amo.net.ua\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2472"}],"collection":[{"href":"https:\/\/tst-amo.net.ua\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tst-amo.net.ua\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tst-amo.net.ua\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tst-amo.net.ua\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2472"}],"version-history":[{"count":7,"href":"https:\/\/tst-amo.net.ua\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2472\/revisions"}],"predecessor-version":[{"id":2480,"href":"https:\/\/tst-amo.net.ua\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2472\/revisions\/2480"}],"wp:attachment":[{"href":"https:\/\/tst-amo.net.ua\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tst-amo.net.ua\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tst-amo.net.ua\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}