{"id":193220,"date":"2013-09-13T13:13:02","date_gmt":"2013-09-13T09:13:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=193220"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=193220","title":{"rendered":"<span class=\"post_title\">\u042f \u043f\u043e\u0441\u0442\u0440\u043e\u044e \u0441\u0432\u043e\u0439 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 Postfix \u0438 Dovecot<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/737\/fed\/568\/737fed56859bb5e08fa33ace3e0a4bf0.png\" alt=\"image\"\/><\/p>\n<p>  \u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e \u0443\u043d\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0432\u0441\u0442\u0430\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u043e \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u043a\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0412\u0434\u0443\u043c\u0447\u0438\u0432\u043e\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u0430\u043d\u0443\u0430\u043b\u043e\u0432 \u0438 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u0444\u0430\u043a\u0442 \u2013 \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u0438\u043b\u0438 \u043f\u043e\u0434\u043e\u0431\u0438\u044f Best Practice \u043f\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044e \u043f\u043e\u0447\u0442\u043e\u0432\u0438\u043a\u0430.<\/p>\n<p>  \u041c\u0430\u043d\u0443\u0430\u043b \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u044b\u0439, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b. \u0413\u0443\u0440\u0443 \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f, \u043d\u043e\u0443-\u0445\u0430\u0443 \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442 \u2013 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0431\u043e\u0440\u043d\u043e\u0439 \u0441\u043e\u043b\u044f\u043d\u043a\u043e\u0439 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432\u0441\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043f\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044e \u043f\u043e\u0447\u0442\u043e\u0432\u0438\u043a\u0430 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u0443.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0445\u043e\u0447\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0451 \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0431\u0443\u0434\u0435\u0442 \u043f\u0430\u043a\u0435\u0442 <a href=\"http:\/\/www.iredmail.org\/\">iRedMail<\/a>. \u041e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 Postfix, Dovecot, Apache, MySQL\/PostgreSQL, Policyd, Amavis, Fail2ban, Roundcube \u0438 \u0434\u0430\u0436\u0435 Awstats. \u0421\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u043b\u0435\u0433\u043a\u043e, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e, \u0435\u0441\u0442\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u0430\u044f \u0430\u0434\u043c\u0438\u043d\u043a\u0430 (\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f) \u0438 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u0430\u044f \u0430\u0434\u043c\u0438\u043d\u043a\u0430 (\u043f\u043b\u0430\u0442\u043d\u0430\u044f) \u043d\u0435 \u0438\u0434\u0443\u0449\u0430\u044f \u043d\u0438 \u0432 \u043a\u0430\u043a\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441 \u0443\u0431\u043e\u0433\u0438\u043c PostfixAdmin. \u041f\u043e\u043a\u043b\u043e\u043d\u043d\u0438\u043a\u0438 \u0436\u0435 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0442\u0440\u0443\u0434\u0430 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435.<\/p>\n<p>  \u0421\u0442\u0430\u0440\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043f\u043e\u0434 Gentoo \u0438 \u043d\u0451\u0441 \u0432 \u0441\u0435\u0431\u0435 \u0442\u0435\u0440\u043c\u043e\u044f\u0434\u0435\u0440\u043d\u044b\u0439 \u0437\u0430\u0440\u044f\u0434 \u0438\u0437 Postfix+VDA \u0441 Courier \u0438 \u0433\u043b\u044e\u0447\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e SASL, \u0440\u0435\u0448\u0430\u0432\u0448\u0438\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a mysql \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u041f\u043b\u0430\u043d \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u043a\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u043b\u0441\u044f \u0432 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u043d\u0430\u0448 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u2013 CentOS. \u0420\u043e\u043b\u044c MTA \u0438 MDA \u0432\u043e\u0437\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0432\u044f\u0437\u043a\u0443 Postfix \u0438 Dovecot, \u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0430\u0440\u0442\u0438\u043b\u043b\u0435\u0440\u0438\u0438: Amavis + SpamAssassin + ClamAV + Postgrey + Fail2Ban. \u041f\u0438\u0441\u044c\u043c\u0430 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0430\u0445, \u0430 \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0434\u043e\u043c\u0435\u043d\u044b \u2014 \u0432 MySQL. \u041d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0438 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u0432\u043e\u0442.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/4df\/266\/3bc\/4df2663bc0e864df1a00d77353e4dbcf.png\" alt=\"image\"\/><\/p>\n<p>  <b>[*]<\/b> \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438. \u041c\u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u043b\u043e <b>epel, rpmforge, centalt \u0438 remi<\/b>. \u041d\u0435 \u0432\u0441\u0435 \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c\u0438, \u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d yum-priorities; \u043d\u0443 \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u043b\u0435\u043d\u044c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f, \u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c-\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u0445 \u0440\u0443\u043a\u0430\u043c\u0438. \u0414\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0438\u0437 \u043a\u0430\u043a\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  <b>[*]<\/b> \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 <b>SELinux<\/b> \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u0438\u043c\u0435\u043c, \u0447\u0442\u043e selinux \u043f\u043e-\u043b\u0430\u043c\u0435\u0440\u0441\u043a\u0438 \u0441\u0434\u0435\u043b\u0430\u043d permissive \u0438\u043b\u0438 disabled. <\/p>\n<p>  <b>[*]<\/b> \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e <b>ntp<\/b>:  <\/p>\n<pre><code class=\"bash\">yum install ntp ntpdate &lt;\u0432\u0430\u0448 ntp \u0441\u0435\u0440\u0432\u0435\u0440&gt; chkconfig ntpd on && \/etc\/init.d\/ntpd start <\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b Dovecot\u2019a \u00abTime has moved backwards\u00bb. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0432 <i>\/etc\/sysconfig\/ntpd<\/i> \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u043b\u044e\u0447 \u043d\u0430 -L, \u0447\u0442\u043e\u0431\u044b ntpd \u043d\u0435 \u0441\u043b\u0443\u0448\u0430\u043b \u0441\u0435\u0442\u044c.<\/p>\n<p>  <b>[*]<\/b> \u0412 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u0441\u0442\u0430\u0432\u0438\u043c \u0443\u0442\u0438\u043b\u0438\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0442 \u043d\u0430\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443:  <\/p>\n<pre><code class=\"bash\">yum install wget mlocate bind-utils telnet mailx sharutils <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/a02\/ee4\/6c0\/a02ee46c0147a168d556e458c60839dd.png\" alt=\"image\"\/><\/p>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c <b>MySQL 5.5 \u043e\u0442 Remi<\/b>. \u041c\u043e\u0436\u043d\u043e \u0438 mariadb, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u043e \u043f\u043e\u043a\u0430 MySQL \u0435\u0449\u0451 \u0436\u0438\u0432, \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442. \u0412\u0435\u0440\u0441\u0438\u044f \u0432\u0430\u0436\u043d\u0430, \u0442.\u043a. \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 Postfix \u0434\u043e 2.10 \u043e\u043d \u0437\u0430\u0445\u043e\u0447\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0438 \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c 5.1 \u0438\u0437 base, \u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u0444\u0438\u043a\u0441\u0430 \u0438\u0437 CentALT \u043f\u043e\u0442\u044f\u043d\u0435\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 MariaDB. \u041a\u043e\u043c\u0443 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f PgSQL \u2014 \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0435\u0433\u043e. \u0420\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043d\u0438\u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u0434\u0430\u0436\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b postfix \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0431\u0440\u0430\u0442\u044c \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u043c\u0438. \u041e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0430\u043c\u043e\u0433\u043e postgresql \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0431\u0430\u0437\u044b.<\/p>\n<p>  \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u00ab\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438\u00bb (\u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0441\u043b\u0435\u0433\u043a\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 my.cnf). \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <b>postfix<\/b> \u0441 \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u043e\u0439 \u0431\u0430\u0437\u043e\u0439 \u0438 \u0432\u0441\u0435\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u043d\u0430 \u043d\u0435\u0451.  <\/p>\n<pre><code class=\"sql\">CREATE USER postfix@localhost IDENTIFIED BY 'mypassword'; CREATE DATABASE postfix; GRANT ALL PRIVILEGES ON postfix.* TO postfix; <\/code><\/pre>\n<p>  \u0410\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u043e\u043c \u0443 \u043c\u0435\u043d\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 <b>ClamAV<\/b>. \u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0435\u0441\u0442\u044c \u043d\u0430 CentALT, \u043e\u0434\u043d\u0430\u043a\u043e \u043e\u043d\u0430 \u0432 \u0443\u043f\u043e\u0440 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442 \u043e\u0442\u0442\u0443\u0434\u0430 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0443\u043c\u0438\u0440\u0430\u044f \u043d\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0441\u043a\u0430\u0447\u0430\u0442\u044c 50 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442 clamav-db. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0430\u0432\u0438\u043c \u0438\u0437 <b>EPEL<\/b> \u043d\u0430 \u043f\u0430\u0440\u0443 \u043c\u0438\u043d\u043e\u0440\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u043c\u0435\u043d\u044c\u0448\u0435, \u043f\u043e\u0433\u043e\u0434\u044b \u044d\u0442\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u0442. Clam \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0443 \u043d\u0430\u0441 \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u043a\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 <i>\/etc\/clamd.conf<\/i> \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0438:  <\/p>\n<pre><code class=\"bash\">#TCPSocket 3310 #TCPAddr 127.0.0.1 <\/code><\/pre>\n<p>  \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0430\u0437 \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0437\u0430 \u043d\u0435\u0433\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <b>freshclam<\/b>. \u041f\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0441\u044f \u0432 <i>cron.daily<\/i> \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441 \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u0430  <\/p>\n<pre><code class=\"bash\">freshclam chkconfig clamd on && \/etc\/init.d\/clamd start <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/3db\/e40\/621\/3dbe40621caec7809d9f0c4c363627a5.png\" alt=\"image\"\/><\/p>\n<p>  \u0420\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u043d\u0435 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u2014 \u043b\u0438\u0447\u043d\u043e\u0435 \u0434\u0435\u043b\u043e \u043a\u0430\u0436\u0434\u043e\u0433\u043e. \u041c\u043d\u0435 \u043e\u043d \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438. \u0412\u0430\u043c \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0431\u0430\u0437\u044b \u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e\u043c\u0435\u043d\u043e\u0432, \u044f\u0449\u0438\u043a\u043e\u0432, \u0430\u043b\u0438\u0430\u0441\u043e\u0432 \u0438 \u0442.\u043f. \u0414\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f <b>PostfixAdmin<\/b>, \u043d\u043e \u043c\u043d\u0435 \u043e\u043d \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f. \u0420\u0430\u0432\u043d\u043e \u043a\u0430\u043a \u044f \u0431\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0430 DB-\u0441\u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. <\/p>\n<p>  \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u0445\u043e\u0447\u0435\u0442 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u0431-\u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u044e SQL-\u0434\u0430\u043c\u043f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 \u0432\u0441\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0436\u0438\u0437\u043d\u0438. \u0414\u0430\u0436\u0435 \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438: <a href=\"https:\/\/github.com\/Haran\/Mail.CONF\/blob\/master\/opt\/mysql_dump.sql\">mysql_dump.sql \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435<\/a>.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0436\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f PostfixAdmin \u2014 \u0441\u0442\u0430\u0432\u044c\u0442\u0435 <b>nginx\/apache + php<\/b> \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0430\u043c <b>PostfixAdmin<\/b>. \u0418 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e <font color=\"darkred\">\u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0432\u0435\u0440\u0445 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0433\u043e \u0434\u0430\u043c\u043f\u0430 \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f<\/font> \u2014 \u0438\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u00ab\u043b\u0438\u0448\u043d\u0438\u0435\u00bb \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u041d\u044e\u0430\u043d\u0441\u043e\u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 PostfixAdmin \u043d\u0435\u043c\u043d\u043e\u0433\u043e. \u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c <i>config.inc.php<\/i>, \u043e\u0431\u0440\u0430\u0449\u0430\u044f \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:  <\/p>\n<pre><code class=\"php\">## \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0442\u043e\u0442 \u0436\u0435 \u043c\u0435\u0442\u043e\u0434 \u0445\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u0440\u043e\u043b\u044f, \u0447\u0442\u043e \u0438 dovecot $CONF['encrypt'] = 'md5crypt'; $CONF['transport_default'] = 'virtual'; $CONF['emailcheck_resolve_domain']='NO'; ## \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f dovecot, \u0443\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 $CONF['create_mailbox_subdirs_prefix']=''; ## \u041d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043a\u0432\u043e\u0442 \u043d\u0435 \u0432 maildir, \u0430 \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 dict $CONF['new_quota_table'] = 'yes'; <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0434\u0442\u0438 \u043d\u0430 <a href=\"http:\/\/domain.tld\/postfixadmin\/setup.php\">domain.tld\/postfixadmin\/setup.php<\/a>, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c \u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u0441\u0443\u043f\u0435\u0440-\u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0445\u044d\u0448 \u043d\u0430\u0434\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u0432 \u0444\u0430\u0439\u043b config.inc.php \u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u0442\u0430\u0442\u0443\u0441:  <\/p>\n<pre><code class=\"php\">$CONF['configured'] = true; $CONF['setup_password'] = 't8h9i9s2i7s7m2y4l9o8g9i4n:a0n9d5p2a5s2s9w5o4r7d'; <\/code><\/pre>\n<p>  <b>[!]<\/b> Postfixadmin \u0441\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0431\u0430\u0437\u044b \u0438 \u0432 mysql, \u0438 \u0432 postgresql \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 setup.php. \u0415\u0441\u043b\u0438 \u043d\u0430\u043c\u0435\u0440\u0435\u0432\u0430\u0435\u0442\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u043f\u0443\u0441\u0442\u0443\u044e \u0431\u0430\u0437\u0443.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/761\/c6e\/aaa\/761c6eaaa5c859582ffcf291b63cfd34.png\" alt=\"image\"\/><\/p>\n<p>  \u041f\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c, \u0447\u0442\u043e \u0432 \u0431\u0430\u0437\u0435 postfix \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0432\u0441\u044f \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 MTA \u0438 MDA. <b>Postfix<\/b> \u0443\u0436\u0435 \u0438\u0434\u0451\u0442 \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0435 \u0441 CentOS, \u043d\u043e \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u043d\u043e\u0432\u044b\u0439. \u041e\u0431\u043d\u043e\u0432\u0438\u043c \u0435\u0433\u043e \u0438\u0437 <b>CentALT<\/b> \u0438 \u043e\u0442\u0442\u0443\u0434\u0430 \u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c Dovecot.  <\/p>\n<pre><code class=\"bash\">yum update postfix yum install dovecot dovecot-mysql <\/code><\/pre>\n<p>  \u0412\u0441\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u0440\u0430\u0431\u043b\u044f \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0432 <i>\/var\/vmail<\/i> \u043f\u043e\u0434 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u044e\u0437\u0432\u0435\u0440\u0435\u043c:  <\/p>\n<pre><code class=\"bash\">groupadd  -g 1000 vmail useradd -d \/var\/vmail\/ -g 1000 -u 1000 vmail chown vmail:vmail \/var\/vmail <\/code><\/pre>\n<p>  \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0441\u0430\u043c\u043e\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 SSL&#8217;\u043a\u0438  <\/p>\n<pre><code class=\"bash\">mkdir \/etc\/postfix\/certs openssl req -new -x509 -days 3650 -nodes -out \/etc\/postfix\/certs\/cert.pem -keyout \/etc\/postfix\/certs\/key.pem <\/code><\/pre>\n<p>  \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u044b\u0439 \u044d\u0442\u0430\u043f \u0441\u0431\u043e\u0440\u043a\u0438 \u2013 \u0443\u0431\u0435\u0434\u0438\u0442\u044c Postfix \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445:  <\/p>\n<pre><code class=\"bash\">mkdir \/etc\/postfix\/mysql <\/code><\/pre>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0444\u0430\u0439\u043b\u044b \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f postfix mysql<\/b><\/p>\n<div class=\"spoiler_text\"><b>relay_domains.cf<\/b>  <\/p>\n<pre><code class=\"bash\">hosts = localhost user = postfix password = mypassword dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1' <\/code><\/pre>\n<p>  <b>virtual_alias_domain_maps.cf<\/b>  <\/p>\n<pre><code class=\"bash\">hosts = localhost user = postfix password = mypassword dbname = postfix query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 <\/code><\/pre>\n<p>  <b>virtual_alias_maps.cf<\/b>  <\/p>\n<pre><code class=\"bash\">hosts = localhost user = postfix password = mypassword dbname = postfix query = SELECT goto FROM alias WHERE address='%s' AND active = '1' <\/code><\/pre>\n<p>  <b>virtual_mailbox_domains.cf<\/b>  <\/p>\n<pre><code class=\"bash\">hosts = localhost user = postfix password = mypassword dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1' <\/code><\/pre>\n<p>  <b>virtual_mailbox_maps.cf<\/b>  <\/p>\n<pre><code class=\"bash\">hosts = localhost user = postfix password = mypassword dbname = postfix query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1' <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0439\u043b <i>\/etc\/postfix\/main.cf<\/i>, \u043e\u0431\u0443\u0447\u0430\u044f Postfix \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0431\u0430\u0437\u043e\u0439 \u043f\u043e \u0441\u0432\u0435\u0436\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c:  <\/p>\n<pre><code class=\"bash\"># ============================================================ # MySQL mappings # ============================================================ relay_domains = mysql:\/etc\/postfix\/mysql\/relay_domains.cf virtual_alias_maps = mysql:\/etc\/postfix\/mysql\/virtual_alias_maps.cf,                      mysql:\/etc\/postfix\/mysql\/virtual_alias_domain_maps.cf virtual_mailbox_domains = mysql:\/etc\/postfix\/mysql\/virtual_mailbox_domains.cf virtual_mailbox_maps = mysql:\/etc\/postfix\/mysql\/virtual_mailbox_maps.cf <\/code><\/pre>\n<p>  \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u0432\u043e\u0438\u0445 \u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0443\u0435\u0442 \u0447\u0443\u0436\u0438\u0445. \u0427\u0442\u043e\u0431\u044b \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c <b>Submission<\/b>, \u043f\u043e\u0434\u043d\u044f\u0432 SMTP \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 587 \u043f\u043e\u0440\u0442\u0443. \u0421\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u044b \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u043e\u0432\u044b\u0445 \u0443\u0447\u0451\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043f\u0440\u0438 \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u0438 smtp \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 587 \u043f\u043e\u0440\u0442; \u0432\u044b \u0436\u0435 \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c, \u0447\u0442\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u043f\u0438\u0441\u0430\u0442\u044c mail.domain.tld, \u0430 \u0435\u0449\u0451 \u043d\u0430\u0434\u043e \u0438 \u043f\u043e\u0440\u0442\u044b \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0432 <i>\/etc\/postfix\/master.cf<\/i> \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0441\u0435\u043a\u0446\u0438\u044e, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0443\u044e \u0437\u0430 submission:  <\/p>\n<pre><code class=\"bash\">submission inet n       -       n       -       -       smtpd   -o syslog_name=postfix\/submission   -o smtpd_tls_wrappermode=no   -o smtpd_tls_security_level=encrypt   -o smtpd_sasl_auth_enable=yes   -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject   -o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination   -o milter_macro_daemon_name=ORIGINATING <\/code><\/pre>\n<p>  <b>[!] <\/b>\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u043f\u0435\u0440\u0435\u0434 <b>-o<\/b> \u043a\u043b\u044e\u0447\u0430\u043c\u0438 \u2014 \u0431\u0435\u0437 \u043d\u0438\u0445 \u043a\u043e\u043d\u0444\u0438\u0433 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c. <\/p>\n<p>  \u041f\u043e\u043a\u0430 \u043e\u0442\u043b\u043e\u0436\u0438\u043c \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 master.cf, \u043a \u043d\u0435\u043c\u0443 \u043c\u044b \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043f\u043e\u0437\u0434\u043d\u0435\u0435, \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0441 <i>\/etc\/postfix\/main.cf<\/i>  <\/p>\n<pre><code class=\"bash\">soft_bounce = no myhostname = mail.domain.tld mydomain = domain.tld myorigin = $myhostname  # \u0423\u0431\u0438\u0440\u0430\u0435\u043c $myhostname \u0438 $mydomain \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0430 # \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e do not list domain in BOTH mydestination and virtual_mailbox_domains mydestination = localhost.$mydomain, localhost  ## \u0412\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u0432\u043e\u0438 \u0441\u0435\u0442\u043a\u0438 mynetworks = 192.168.0.0\/16, 127.0.0.0\/8  ## \u0423\u0431\u0438\u0440\u0430\u0435\u043c nis:\/ \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0441\u043f\u0430\u043c\u0430 \u0432 \u043b\u043e\u0433  ## dict_nis_init: NIS domain name not set - NIS lookups disabled alias_maps = hash:\/etc\/aliases  smtpd_banner = $myhostname ESMTP $mail_name debug_peer_level = 2 debug_peer_list = 127.0.0.1 <\/code><\/pre>\n<p>  \u042d\u0442\u043e \u0431\u044b\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0446\u0438\u0439 \u043d\u0430\u0448\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043d\u0430 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b, \u0443\u0431\u0438\u0440\u0430\u044f \u0438\u0445 \u0438\u0437 \u0440\u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0442\u0430\u043c \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f. \u042f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0441\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u0432 \u043d\u0438\u0436\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0444\u0430\u0439\u043b\u0430 <i>\/etc\/postfix\/main.cf<\/i>:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0447\u0435\u0440\u0435\u0434\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u043d\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\"># ============================================================ # RESTRICTIONS # # Uncomment reject_rbl_client if necessary # More information at: http:\/\/help.ubuntu.ru\/wiki\/\u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f_\u0441\u043f\u0430\u043c\u0430_\u043d\u0430_\u0443\u0440\u043e\u0432\u043d\u0435_smtp_\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 # ============================================================ smtpd_discard_ehlo_keywords = etrn, silent-discard smtpd_forbidden_commands = CONNECT GET POST broken_sasl_auth_clients = yes smtpd_delay_reject = yes smtpd_helo_required = yes disable_vrfy_command = yes  smtpd_helo_restrictions = permit_mynetworks,                           permit_sasl_authenticated,                           reject_non_fqdn_helo_hostname,                           reject_invalid_helo_hostname,                           permit  smtpd_data_restrictions = permit_mynetworks,                           permit_sasl_authenticated,                           reject_unauth_pipelining,                           reject_multi_recipient_bounce,                           permit  smtpd_sender_restrictions = permit_mynetworks,                             permit_sasl_authenticated,                             reject_non_fqdn_sender,                             reject_unknown_sender_domain,                             permit  smtpd_recipient_restrictions = reject_non_fqdn_recipient,                                reject_unknown_recipient_domain,                                reject_multi_recipient_bounce,                                permit_mynetworks,                                permit_sasl_authenticated,                                reject_unauth_destination,                                check_policy_service unix:\/var\/spool\/postfix\/postgrey\/socket,                                reject_invalid_hostname,                                #reject_rbl_client zen.spamhaus.org,                                #reject_rbl_client bl.spamcop.net,                                #reject_rbl_client dnsbl.sorbs.net,                                permit  # ============================================================ # TLS # ============================================================ smtp_tls_security_level = may smtpd_tls_security_level = may smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s smtp_tls_session_cache_database = btree:$data_directory\/smtp_tls_session_cache smtpd_tls_key_file = \/etc\/postfix\/certs\/key.pem smtpd_tls_cert_file = \/etc\/postfix\/certs\/cert.pem tls_random_source = dev:\/dev\/urandom  # ============================================================ # LIMITS # ============================================================ message_size_limit = 51200000 smtpd_soft_error_limit = 10 smtpd_hard_error_limit = 15 smtpd_error_sleep_time = 20 anvil_rate_time_unit = 60s smtpd_client_connection_count_limit = 20 smtpd_client_connection_rate_limit = 30 smtpd_client_message_rate_limit = 30 smtpd_client_event_limit_exceptions = 127.0.0.1\/8 smtpd_client_connection_limit_exceptions = 127.0.0.1\/8  # ============================================================ # QUEUE # ============================================================ maximal_queue_lifetime = 1d bounce_queue_lifetime = 1d <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <b>[!]<\/b> \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0451\u0440\u043d\u044b\u0435 \u0441\u043f\u0438\u0441\u043a\u0438 \u2014 \u0432\u0430\u0448 \u0432\u044b\u0431\u043e\u0440. \u042f \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b <b>reject_rbl_client<\/b>, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u043b\u043e\u0434\u0438\u0442\u044c \u0445\u043e\u043b\u0438\u0432\u0430\u0440\u044b. \u0413\u0440\u0435\u0439\u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0445\u0432\u0430\u0442\u0430\u0435\u0442, \u0430 Spamhaus \u0438 \u0438\u0436\u0435 \u0441 \u043d\u0438\u043c \u0438\u0441\u043f\u043e\u0432\u0435\u0434\u0443\u044e\u0442 \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u0443\u044e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443, \u043d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u00ab\u0447\u0435\u0441\u0442\u043d\u044b\u0445 \u0440\u0435\u0431\u044f\u0442\u00bb, \u0432 \u0447\u0451\u0440\u043d\u044b\u0435 \u0441\u043f\u0438\u0441\u043a\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u043d\u0435 \u0437\u0430\u043d\u043e\u0441\u0438\u0442 \u0438 \u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439 \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0431\u044b\u043b\u043e. \u041f\u043e\u0432\u0435\u0437\u043b\u043e, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u2014 \u0434\u0435\u043b\u043e \u0432\u043a\u0443\u0441\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b RBL \u0438\u043b\u0438 \u043d\u0435\u0442. \u0421\u0447\u0438\u0442\u0430\u0439\u0442\u0435, \u0447\u0442\u043e \u044f \u0438\u0445 \u0443\u043a\u0430\u0437\u0430\u043b \u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0446\u0435\u043b\u044f\u0445.<br \/>  <b>[!] <\/b>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0430\u0437\u0431\u0438\u0442\u044b \u043f\u043e \u0433\u0440\u0443\u043f\u043f\u0430\u043c \u2014 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0438\u0445 \u0438 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u043f\u043e\u0434 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043d\u0443\u0436\u0434\u044b. \u0425\u0443\u0436\u0435 \u043d\u0435\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430, \u0447\u0435\u043c \u0432\u0441\u043b\u0435\u043f\u0443\u044e \u0432\u043b\u0435\u043f\u0438\u0442\u044c \u0447\u0443\u0436\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0431\u0435\u0437 \u043f\u0440\u0430\u0432\u043e\u043a.<br \/>  <b>[!] <\/b>\u041a \u0444\u0430\u0439\u043b\u0443 main.cf \u043c\u044b \u0441\u043d\u043e\u0432\u0430 \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0432 \u043d\u0435\u0433\u043e <b>postgrey<\/b>, <b>amavis<\/b> \u0438 <b>dovecot<\/b>, \u0430 \u043f\u043e\u043a\u0430 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a MDA<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/504\/87f\/4a3\/50487f4a33935b0e6a9731f82250aab5.png\" alt=\"image\"\/><\/p>\n<p>  \u0427\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435:  <\/p>\n<ul>\n<li>\u042d\u0442\u043e \u043d\u0430\u0448 Mail Delivery Agent, \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442 <\/li>\n<li>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 SASL, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c Postfix<\/li>\n<li>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u043a\u0432\u043e\u0442\u0430\u043c\u0438<\/li>\n<li>\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e imap \u0438 pop3<\/li>\n<\/ul>\n<p>  \u041f\u0430\u0440\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 <i>\/etc\/dovecot\/dovecot.conf<\/i>:  <\/p>\n<pre><code class=\"bash\">protocols = imap pop3 login_greeting = Hello there. <\/code><\/pre>\n<p>  \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0443\u0434\u043e\u0431\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0442\u0430 \u043d\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">10-auth.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">disable_plaintext_auth = no auth_realms = domain.tld domain2.tld auth_default_realm = domain.tld auth_mechanisms = plain login ## [!] \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c auth-system.conf.ext, \u0447\u0442\u043e\u0431\u044b \u043d\u0435  ## \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c dovecot \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 pam #!include auth-system.conf.ext <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">10-logging.conf<\/b><\/p>\n<div class=\"spoiler_text\">\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u2014 \u043f\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438.  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">10-mail.conf<\/b><\/p>\n<div class=\"spoiler_text\">mail_location = maildir:\/var\/vmail\/%d\/%n<br \/>  mail_uid = 1000<br \/>  mail_gid = 1000<br \/>  mail_plugins = quota  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">10-master.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\"># \u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c imap \u0438 imaps service imap-login {   inet_listener imap {     port = 143   }   inet_listener imaps {     port = 993     ssl = yes   } }  # \u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c pop3 \u0438 pop3s service pop3-login {   inet_listener pop3 {     port = 110   }   inet_listener pop3s {     port = 995     ssl = yes   } }  # \u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c SASL, \u043a\u0443\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0445\u043e\u0434\u0438\u0442\u044c postfix service auth {   unix_listener auth-userdb {     mode = 0600     user = vmail     group = vmail   }   unix_listener \/var\/spool\/postfix\/private\/auth {     mode = 0666     user=postfix     group=postfix   } } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">10-ssl.conf<\/b><\/p>\n<div class=\"spoiler_text\">ssl = yes<br \/>  ssl_cert = &lt;\/etc\/postfix\/certs\/cert.pem<br \/>  ssl_key = &lt;\/etc\/postfix\/certs\/key.pem  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">15-lda.conf<\/b><\/p>\n<div class=\"spoiler_text\">quota_full_tempfail = no<br \/>  lda_mailbox_autocreate = yes<br \/>  lda_mailbox_autosubscribe = yes<br \/>  protocol lda {<br \/>   mail_plugins = $mail_plugins autocreate<br \/>  }  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">20-imap.conf<\/b><\/p>\n<div class=\"spoiler_text\">protocol imap {<br \/>   mail_plugins = $mail_plugins autocreate quota imap_quota<br \/>  }  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">90-plugin.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\"># \u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0432\u0430\u0441 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f. # \u0422\u0430\u043a\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u0434\u043b\u044f \u0431\u0435\u0437\u0431\u043e\u043b\u0435\u0437\u043d\u0435\u043d\u043d\u043e\u0439 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0441\u043e \u0441\u0442\u0430\u0440\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b plugin {   autocreate = Trash   autocreate2 = sent-mail   autocreate3 = drafts   autosubscribe = Trash   autosubscribe2 = sent-mail   autosubscribe3 = drafts } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">90-quota.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\"># \u041e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0443\u0436\u0434\u0430\u043c\u0438. plugin {   quota_rule = *:storage=200M   quota_rule2 = Trash:storage=+10M }  plugin {   quota_warning = storage=90%% quota-warning 90 %u }  # \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0431\u044b\u043b \u043d\u0443\u0436\u043d\u044b\u0439 chmod # \u041f\u043b\u044e\u0441 \u0447\u0442\u043e\u0431\u044b \u0432 quota-warning.sh \u0431\u044b\u043b \u0443\u043a\u0430\u0437\u0430\u043d \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043e dovecot-lda service quota-warning {   executable = script \/usr\/local\/bin\/quota-warning.sh   user = vmail   unix_listener quota-warning {     user = vmail   } }  # \u0424\u043e\u0440\u043c\u0430\u0442 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u0432\u043e\u0442\u044b - maildir # \u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430 dict, fs \u0438\u043b\u0438 dirsize # \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0432 http:\/\/wiki2.dovecot.org\/Quota plugin {   quota = maildir:User quota } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">auth-sql.conf.ext<\/b><\/p>\n<div class=\"spoiler_text\">passdb {<br \/>   driver = sql<br \/>   args = \/etc\/dovecot\/dovecot-sql.conf.ext<br \/>  }<br \/>  userdb {<br \/>   driver = sql<br \/>   args = \/etc\/dovecot\/dovecot-sql.conf.ext<br \/>  }  <\/div>\n<\/div>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0451\u043c <i>\/etc\/dovecot\/dovecot-sql.conf.ext<\/i>:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">dovecot-sql.conf.ext<\/b><\/p>\n<div class=\"spoiler_text\">driver = mysql<br \/>  connect = host=localhost dbname=postfix user=postfix password=mypassword<br \/>  default_pass_scheme = MD5-CRYPT<br \/>  user_query = SELECT &#8216;\/var\/vmail\/%d\/%n&#8217; as home, &#8216;maildir:\/var\/vmail\/%d\/%n&#8217;as mail, 1000 AS uid, 1000 AS gid, concat(&#8216;*:bytes=&#8217;, quota) AS quota_rule FROM mailbox WHERE username = &#8216;%u&#8217; AND active = &#8216;1&#8217;<br \/>  password_query = SELECT username as user, password, &#8216;\/var\/vmail\/%d\/%n&#8217; as userdb_home, &#8216;maildir:\/var\/vmail\/%d\/%n&#8217; as userdb_mail, 1000 as userdb_uid, 1000 as userdb_gid, concat(&#8216;*:bytes=&#8217;, quota) AS userdb_quota_rule FROM mailbox WHER<br \/>  E username = &#8216;%u&#8217; AND active = &#8216;1&#8217;  <\/div>\n<\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0440\u0443\u0436\u0438\u043c <b>Postfix<\/b> \u0441 <b>Dovecot<\/b>. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0434\u0432\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 \u0432 <i>\/etc\/postfix\/main.cf<\/i>:  <\/p>\n<pre><code class=\"bash\"># ============================================================ # SASL # ============================================================ smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_type = dovecot smtpd_sasl_path = private\/auth  # ============================================================ # VIRTUAL # ============================================================ virtual_mailbox_base = \/var\/vmail virtual_minimum_uid = 1000 virtual_uid_maps = static:1000 virtual_gid_maps = static:1000 virtual_transport = dovecot dovecot_destination_recipient_limit = 1 <\/code><\/pre>\n<p>  \u0418 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c <b>Postfix<\/b> \u043f\u0435\u0440\u0435\u0434 \u0444\u0430\u043a\u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f dovecot. \u0412 <i>\/etc\/postfix\/master.cf<\/i>:  <\/p>\n<pre><code class=\"bash\"># ==================================================================== # DOVECOT # ==================================================================== dovecot unix    -       n       n       -       -      pipe   flags=DRhu user=vmail:vmail argv=\/usr\/libexec\/dovecot\/deliver -f ${sender} -d ${recipient} <\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043e \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u043a\u0432\u043e\u0442\u044b <i>\/usr\/local\/bin\/quota-warning.sh<\/i> \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 CentOS \u043f\u0443\u0442\u044c \u0432 \u043d\u0451\u043c \u0431\u044b\u043b \u0443\u043a\u0430\u0437\u0430\u043d \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u0415\u0433\u043e \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u0441\u0442\u0430\u0442\u0438, \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u0430\u0434\u0440\u0435\u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0443\u043a\u0430\u0437\u0430\u043d, \u043a\u0430\u043a <i>postmaster@domain.tld<\/i>. \u041d\u0430\u0439\u0434\u0451\u043c \u0438\u0441\u043a\u043e\u043c\u044b\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a  <\/p>\n<pre><code class=\"bash\">updatedb locate dovecot-lda chmod 755 \/usr\/local\/bin\/quota-warning.sh <\/code><\/pre>\n<p>  \u0418 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u043c \u043f\u0443\u0442\u044c \u0432 \u0441\u0430\u043c\u043e\u043c <i>\/usr\/local\/bin\/quota-warning.sh<\/i>, \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0432 \u0441\u043a\u0440\u0438\u043f\u0442 \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/25f\/da7\/b83\/25fda7b83dd5ceaf2d2887ac8db15712.png\" alt=\"image\"\/><\/p>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c <b>Amavis<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u043e\u0439 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u043c\u0438 \u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438 \u0438 \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u043d\u043e-\u0430\u043d\u0442\u0438\u0441\u043f\u0430\u043c\u043e\u0432\u044b\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438, \u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c spamd \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u2013 \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043c\u043e\u0434\u0443\u043b\u044c, \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u0427\u0442\u043e\u0431\u044b SA \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0440\u043e\u0434\u043d\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <b>sa-update<\/b>. \u0423\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0432 <i>etc\/cron.d<\/i> \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b\u0438\u043a <b>sa-update<\/b> \u0441 \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0430\u043f\u0434\u0435\u0439\u0442\u0435\u0440\u0430.<\/p>\n<p>  <b>[!]<\/b> \u0421\u0442\u0430\u0432\u044c\u0442\u0435 <b>spamassassin 3.3.2<\/b> \u0438\u0437 <b>rpmforge-extras<\/b>, \u0442.\u043a. \u0432\u0442\u044b\u043a\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u0438\u0437 EPEL \u0432\u0435\u0440\u0441\u0438\u044f 3.3.1 \u0438\u043c\u0435\u0435\u0442 \u0432\u0440\u043e\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u0434\u0435\u0444\u0435\u043a\u0442 \u0432 sa-update. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f <u><b>3.3.2<\/b><\/u> \u0443\u0436\u0435 \u0438\u0437\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043e\u0442 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e  <\/p>\n<pre><code class=\"bash\">yum install spamassassin amavisd-new <\/code><\/pre>\n<p>  \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c <i>\/etc\/mail\/spamassassin\/local.cf<\/i>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">local.cf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">required_hits 6 report_safe 0 rewrite_header Subject ***SPAM***  # # WEIRD STUFF # score FORGED_MUA_OUTLOOK 2.199 2.199 0.963 1.116 score FH_DATE_PAST_20XX 0.0 score DOS_OE_TO_MX_IMAGE 0.0 score DOS_OE_TO_MX 0.0 score DOS_OUTLOOK_TO_MX 0.0 score TO_NO_BRKTS_DIRECT 0.0 score HELO_LOCALHOST 0.0 score FSL_RU_URL 0.0 score FROM_MISSP_EH_MATCH 1.0 score TVD_RCVD_SINGLE 1.0 score TO_IN_SUBJ 1.0  # # TUNING # score SUBJ_FULL_OF_8BITS 0.00 score HTML_COMMENT_8BITS 0.01 score HEADER_8BITS 0.00 score TO_NO_USER 0.01 score FORGED_MUA_OUTLOOK 0.5 score X_AUTH_WARNING 0.01 score SUBJ_HAS_UNIQ_ID 9.99 score HTTP_USERNAME_USED 9.99 score FORGED_YAHOO_RCVD 9.99 score FORGED_JUNO_RCVD 16 score UNWANTED_LANGUAGE_BODY 1.02 score MLM 5.55 score RCVD_NUMERIC_HELO 4.95  # # WHITE\/BLACK LISTS # whitelist_from root@localhost whitelist_from *@example.com blacklist_from *@outblaze.com auto_whitelist_path \/etc\/mail\/spamassassin\/auto-whitelist auto_whitelist_file_mode 0666 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0410 \u0432\u043e\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <b>Amavis<\/b>&#8216;\u0430 \u2014 \u043f\u043e\u043b\u043d\u0430\u044f \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0445\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u043c\u044b\u043c \u043c\u043d\u043e\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0430\u043c Dovecot. \u041e\u043d \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 perl \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0435\u0449\u0451 \u0438 \u043f\u043b\u043e\u0445\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d. \u042f \u0432\u043d\u043e\u0448\u0443 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u044e \u0444\u0430\u0439\u043b \u0432 .pl \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u044e \u0441 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430; \u044d\u0442\u043e \u0445\u043e\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u0436\u0438\u0437\u043d\u044c.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">amavisd.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"perl\"># \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 amavisd # \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0432 \/etc\/postfix\/master.cf $max_servers = 4;  # \u0414\u043e\u043c\u0435\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e $mydomain = 'domain.tld';  # \u041f\u0440\u0430\u0432\u0438\u043c \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0434\u0441\u0435\u0442\u043a\u0438 @mynetworks = qw( 127.0.0.0\/8 [::1] [FE80::]\/10 [FEC0::]\/10                   10.0.0.0\/8 172.16.0.0\/12 192.168.0.0\/16 );  # \u0422\u0432\u0438\u043a \u0434\u043b\u044f 2.6.4 \u0438 \u0441\u0442\u0430\u0440\u0448\u0435. \u0418\u0437\u0431\u0430\u0432\u043b\u044f\u0435\u043c\u0441\u044f \u043e\u0442 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u043b\u043e\u0433\u0435  # Open relay? Nonlocal recips but not originating @client_ipaddr_policy = map { $_ =&gt; 'MYNETS' } @mynetworks;  # \u041f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f spamassassin $sa_tag_level_deflt  = 2.0; $sa_tag2_level_deflt = 5.2; $sa_kill_level_deflt = 6.5; $sa_dsn_cutoff_level = 10;   # \u041a\u0443\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u043f\u0438\u0441\u044c\u043c\u0430\u0445 \u0441 \u0432\u0438\u0440\u0443\u0441\u0430\u043c\u0438 \u0438 \u0441\u043f\u0430\u043c\u043e\u043c $virus_admin               = &quot;virusalert\\@$mydomain&quot;; $mailfrom_notify_admin     = &quot;virusalert\\@$mydomain&quot;; $mailfrom_notify_recip     = &quot;virusalert\\@$mydomain&quot;; $mailfrom_notify_spamadmin = &quot;abuse\\@$mydomain&quot;;       # \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u043c\u044f \u0445\u043e\u0441\u0442\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 $myhostname = 'mail.domain.tld';   # \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0438 $final_virus_destiny      = D_DISCARD; $final_banned_destiny     = D_BOUNCE; $final_spam_destiny       = D_DISCARD; $final_bad_header_destiny = D_PASS;  # \u0415\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d, \u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u0443\u0434\u0430 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0438\u0442\u044c # \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0435 \u044f\u0449\u0438\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c $virus_quarantine_to = &quot;virus-quarantine\\@$mydomain&quot;; $spam_quarantine_to  = &quot;spamtrap\\@$mydomain&quot;;  # \u0415\u0441\u043b\u0438 \u043d\u0430\u0434\u043e \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u043b\u0438 \u0434\u043e\u043c\u0435\u043d\u044b \u0432\u043d\u0435\u0441\u0442\u0438 \u0432 \u0431\u0435\u043b\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a # \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043c\u0430\u0441\u0441\u0438\u0432 @whitelist_sender_maps = ( new_RE(     qr'.*@example\\.com$'i,     qr'user@test\\.org$'i, ));  # \u0412\u0435\u0441\u044c \u043c\u0430\u0441\u0441\u0438\u0432 @av_scanners \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u043c \u0434\u043e @av_scanners = (   ['ClamAV-clamd',     \\&ask_daemon, [&quot;CONTSCAN {}\\n&quot;, &quot;\/var\/run\/clamav\/clamd.sock&quot;],     qr\/\\bOK$\/m, qr\/\\bFOUND$\/m,     qr\/^.*?: (?!Infected Archive)(.*) FOUND$\/m ], );  );  # \u0418 \u0432\u0442\u043e\u0440\u043e\u0439 \u0442\u043e\u0436\u0435 @av_scanners_backup = (   ['ClamAV-clamscan', 'clamscan',   &quot;--stdout --no-summary -r --tempdir=$TEMPBASE {}&quot;,   [0], qr\/:.*\\sFOUND$\/m, qr\/^.*?: (?!Infected Archive)(.*) FOUND$\/m ], ); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u043e\u0431\u0449\u0438\u043c <b>Postfix<\/b>&#8216;\u0443, \u0447\u0442\u043e \u043e\u0442\u043d\u044b\u043d\u0435 \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <b>Amavis<\/b> \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u0447\u0442\u044b. \u0412\u043d\u043e\u0441\u0438\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0431\u043b\u043e\u043a \u0432 <i>\/etc\/postfix\/master.cf<\/i>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">master.cf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\"># ==================================================================== # AMAVIS # ==================================================================== amavisfeed unix -       -       n       -       4       lmtp   -o lmtp_data_done_timeout=1200   -o lmtp_send_xforward_command=yes   -o disable_dns_lookups=yes   -o max_use=20 127.0.0.1:10025 inet n    -       n       -       -     smtpd   -o content_filter=   -o smtpd_delay_reject=no   -o smtpd_client_restrictions=permit_mynetworks,reject   -o smtpd_helo_restrictions=   -o smtpd_sender_restrictions=   -o smtpd_recipient_restrictions=permit_mynetworks,reject   -o smtpd_data_restrictions=reject_unauth_pipelining   -o smtpd_end_of_data_restrictions=   -o smtpd_restriction_classes=   -o mynetworks=127.0.0.0\/8,192.168.0.0\/16   -o smtpd_error_sleep_time=0   -o smtpd_soft_error_limit=1001   -o smtpd_hard_error_limit=1000   -o smtpd_client_connection_count_limit=0   -o smtpd_client_connection_rate_limit=0   -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters,no_address_mappings   -o local_header_rewrite_clients=   -o smtpd_milters=   -o local_recipient_maps=   -o relay_recipient_maps= <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0438 \u0432 <i>\/etc\/postfix\/main.cf<\/i> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c  <\/p>\n<pre><code class=\"bash\"># ============================================================ # AMAVIS # ============================================================ content_filter=amavisfeed:[127.0.0.1]:10024 <\/code><\/pre>\n<p>  \u041e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u044b:  <\/p>\n<pre><code class=\"bash\">chkconfig amavisd on && \/etc\/init.d\/amavisd start \/etc\/init.d\/postfix restart  telnet 127.0.0.1 10024 # 220 [127.0.0.1] ESMTP amavisd-new service ready <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/3fc\/43e\/b62\/3fc43eb6287cd711d58dc65c8cf590d7.png\" alt=\"image\"\/><\/p>\n<p>  \u041e\u0431 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0433\u0440\u0435\u0439\u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430 \u043f\u0438\u0441\u0430\u043b\u043e\u0441\u044c \u0443\u0436\u0435 \u043d\u0435 \u0440\u0430\u0437, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u043b\u0447\u0430  <\/p>\n<pre><code class=\"bash\">yum install postgrey <\/code><\/pre>\n<p>  \u041d\u0438\u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u2014 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0432 <i>\/etc\/postfix\/main.cf<\/i>  <\/p>\n<pre><code class=\"bash\">smtpd_recipient_restrictions = ...                                reject_unauth_destination,                                check_policy_service unix:\/var\/spool\/postfix\/postgrey\/socket,                                ... <\/code><\/pre>\n<p>  <b>[!]<\/b> \u0414\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 check_policy_service \u0434\u043e\u043b\u0436\u043d\u0430 <i>\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e<\/i> \u0438\u0434\u0442\u0438 \u043f\u043e\u0441\u043b\u0435 reject_unauth_destination.<br \/>  \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u2014 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c <i>\/etc\/postfix\/postgrey_whitelist_clients.local<\/i>, \u0430 \u0434\u043b\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u2014 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c <i>postgrey_whitelist_recipients<\/i>. \u0418\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u0432\u0438\u043a\u0438: <a href=\"http:\/\/wiki.centos.org\/HowTos\/postgrey\">wiki.centos.org\/HowTos\/postgrey<\/a><\/p>\n<p>  \u041f\u0440\u043e <b>Fail2ban<\/b> \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c, \u043f\u043e\u043a\u0430\u0436\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0441\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u043e\u0439 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043e \u0438 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u044b. \u041a\u0440\u0430\u0441\u043d\u0430\u044f \u043b\u0438\u043d\u0438\u044f \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u2013 \u043d\u0435\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0434\u043e\u043b\u0431\u0451\u0436\u043a\u0430 \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0440\u0435\u043b\u0435\u044f. \u041f\u0438\u0441\u044c\u043c\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043e\u0442\u0441\u0435\u043a\u0430\u044e\u0442\u0441\u044f, \u0434\u0430 \u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442, \u043d\u043e \u0437\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u0443\u0441\u043e\u0440. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 fail2ban \u0441 \u0434\u0432\u0443\u043c\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438: \u0434\u043b\u044f smtp \u0438 \u0434\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 pop3 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0430\u044e\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0433\u0440\u0430\u0444\u0438\u043a\u0430:  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/f53\/05e\/3a0\/f5305e3a086d4dd62f10cf6ba61edc83.png\" \/><\/div>\n<pre><code class=\"bash\">yum install fail2ban <\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043b\u044f \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \/etc\/fail2ban\/jail.conf<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\"># \u0422\u0443\u0442 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043e\u0431\u0449\u0438\u0435 # \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u043f\u043e\u0434\u0441\u0435\u0442\u043a\u0438 # \u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u043f\u0430\u0440\u0442\u0438\u0438  ## ## \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043f\u0443\u0442\u044c \u043a \u043b\u043e\u0433\u0430\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 ##  [ssh-iptables] enabled  = true filter   = sshd action   = iptables[name=SSH, port=ssh, protocol=tcp] logpath  = \/var\/log\/secure maxretry = 5  [postfix-banhammer] enabled  = true filter   = postfix action   = iptables-multiport-tcp[name=PFIX, port=&quot;smtp,smtps&quot;, protocol=tcp] logpath  = \/var\/log\/maillog maxretry = 3 bantime  = 7200  [dovecot-banhammer] enabled  = true filter   = dovecot action   = iptables-multiport-tcp[name=DCOT, port=&quot;pop3,pop3s,imap,imaps&quot;, protocol=tcp] logpath  = \/var\/log\/maillog findtime = 300 maxretry = 10 bantime  = 1800 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0415\u0441\u043b\u0438 SSH \u043e\u0442\u043a\u0440\u044b\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u0441\u0435\u0442\u044c, \u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u0443\u0431\u0440\u0430\u0442\u044c. \u0418 \u0432\u0441\u0451, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u043b\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0439 \u2013 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u00ab\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438\u00bb.  <\/p>\n<pre><code class=\"bash\">chkconfig fail2ban on && \/etc\/init.d\/fail2ban start <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/1ed\/c84\/2e3\/1edc842e3ad0091dedf80b3bd3159cd8.png\" alt=\"image\"\/><\/p>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 Dovecot \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d <i>autocreate<\/i>, \u0442\u043e \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0438 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0438\u0445 \u0432 \u0431\u0430\u0437\u0443 \u0447\u0435\u0440\u0435\u0437 Postfixadmin \u0438\u043b\u0438 \u0434\u0435\u043b\u0430\u044f INSERT INTO \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438. \u041f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0436\u0435 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u043c \u043f\u0438\u0441\u044c\u043c\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c pop3, imap, smtp \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u0437\u0430\u0445<\/b><\/p>\n<div class=\"spoiler_text\">\n<ol>\n<li><b>\u0422\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043b\u043e\u0433\u0438\u043d POP3<\/b><br \/> \n<pre><code class=\"bash\">telnet 127.0.0.1 110 user test pass testpassword UIDL <\/code><\/pre>\n<p>  <\/li>\n<li><b>\u0422\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043b\u043e\u0433\u0438\u043d IMAP<\/b><br \/> \n<pre><code class=\"bash\">telnet 127.0.0.1 143 1 LOGIN test testpassword 1 SELECT INBOX <\/code><\/pre>\n<p>  <\/li>\n<li><b>\u0422\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c SMTP \u0431\u0435\u0437 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438<\/b><br \/> \n<pre><code class=\"bash\">telnet 127.0.0.1 25 #220 mail.domain.tld ESMTP Postfix helo darling #250 mail.domain.tld MAIL FROM: root@localhost #250 2.1.0 Ok RCPT TO: test@example.com #250 2.1.5 Ok DATA #354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt; this is text message  . #250 2.0.0 Ok: queued as E3BA1A15FA quit #221 2.0.0 Bye <\/code><\/pre>\n<p>  <\/li>\n<li><b>\u0422\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c SMTP c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0431\u0435\u0437 SSL<\/b><br \/>  \u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u0443\u0439\u0442\u0435 \u0432 base64 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u043b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u043b\u0435 AUTH LOGIN. \u0412\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043a\u043e\u0434\u043e\u043c 334 \u0442\u043e\u0436\u0435 \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 base64.<br \/> \n<pre><code class=\"bash\">telnet 127.0.0.1 25 #220 mail.domain.tld ESMTP Postfix ehlo darling #250-mail2.dautkom.lv #250-PIPELINING #250-SIZE 51200000 #250-STARTTLS #250-AUTH PLAIN LOGIN #250-AUTH=PLAIN LOGIN #250-ENHANCEDSTATUSCODES #250-8BITMIME #250 DSN AUTH LOGIN #334 VXNlcm5hbWU6 dGVzdA== #334 UGFzc3dvcmQ6 dGVzdHBhc3N3b3Jk #235 2.7.0 Authentication successful <\/code><\/pre>\n<p>  <\/li>\n<li><b>\u0422\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c SMTP c SSL<\/b><br \/> \n<pre><code class=\"bash\"># \u0417\u0430\u0448\u0438\u0444\u0440\u0443\u0435\u043c \u043d\u0430\u0448\u0438 credentials perl -MMIME::Base64 -e 'print encode_base64(&quot;\\000test\\@example.com\\000testpassword&quot;)'            # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443  # AHRlc3RAZXhhbXBsZS5jb20AdGVzdHBhc3N3b3Jk  openssl s_client -starttls smtp -connect 127.0.0.1:587 -crlf -ign_eof # \u041e\u0431\u043c\u0435\u043d \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f\u043c # \u041d\u0430 \u043f\u043e\u043b\u0442\u043e\u0440\u0430 \u044d\u043a\u0440\u0430\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430  EHLO darling #250-mail.example.com #250-PIPELINING #250-SIZE 51200000 #250-ENHANCEDSTATUSCODES #250-8BITMIME #250 DSN  AUTH PLAIN AHRlc3RAZXhhbXBsZS5jb20AdGVzdHBhc3N3b3Jk #235 2.7.0 Authentication successful <\/code><\/pre>\n<p>  <\/li>\n<\/ol>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u043d\u0443\u044e \u0437\u0430\u0449\u0438\u0442\u0443<\/b><\/p>\n<div class=\"spoiler_text\">\n<ol>\n<li>\u0412 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0435 \u0441 amavis \u0438\u0434\u0443\u0442 \u0432\u0438\u0440\u0443\u0441\u044b \u0438 \u0441\u043f\u0430\u043c. \u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0435, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f. \u0418 \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0430\u043d\u0435\u0440\u044b \u043d\u0435 \u043f\u0430\u043d\u0438\u043a\u043e\u0432\u0430\u043b\u0438, \u043e\u043d\u0438 \u043b\u0435\u0436\u0430\u0442 \u0437\u0430\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0434 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u043c\u0438 \u0442\u0435\u0441\u0442\u0430\u043c\u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u0443\u0435\u043c \u044d\u0442\u0443 \u0440\u0430\u0434\u043e\u0441\u0442\u044c:<br \/> \n<pre><code class=\"bash\">cd \/usr\/share\/doc\/amavisd-new-2.8.0\/test-messages perl -pe 's\/.\/chr(ord($&)^255)\/sge' &lt;sample.tar.gz.compl | zcat | tar xvf - <\/code><\/pre>\n<\/li>\n<li>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0432\u0438\u0440\u0443\u0441\u043e\u0432 \u0438 \u0441\u043f\u0430\u043c\u0430:<br \/> \n<pre><code class=\"bash\">sendmail -i your-address@example.com &lt; sample-virus-simple.txt sendmail -i your-address@example.com &lt; sample-spam-GTUBE-junk.txt <\/code><\/pre>\n<p>  \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u043b\u043e\u0433\u0430\u0445 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \/var\/log\/maillog). \u0427\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043f\u043e\u0434\u043d\u0438\u043c\u0438\u0442\u0435 \u0443\u0440\u043e\u0432\u0435\u043d\u044c <b>verbose<\/b> \u0432 <i>\/etc\/dovecot\/conf.d\/10-logging.conf<\/i> \u0438 <b>log-level<\/b> \u0432 <i>\/etc\/amavisd\/amavisd.conf<\/i>.   <\/li>\n<\/ol>\n<p>  <\/div>\n<\/div>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/ad3\/a76\/d6d\/ad3a76d6d0cafba93cbc243c5cd24791.png\" alt=\"image\"\/><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c <s>\u043f\u0438\u0442\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c<\/s> \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043e\u043c\u0435\u043d\u044b, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0430\u043b\u0438\u0430\u0441\u044b \u0438 \u0442.\u043f. \u041d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0449\u0438\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439:<\/p>\n<ol>\n<li>\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e git, \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \/etc \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u043e \u0448\u0430\u0440\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c\u0438 \u0442\u0435\u0445\u043e\u0442\u0434\u0435\u043b\u0430 \u0438 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u0412 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439, \u043a\u0430\u043a \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u0436\u0438\u0437\u043d\u044c.<\/li>\n<li>\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043c\u043e\u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u0431\u044b\u043b\u0430 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f c courier \u043d\u0430 dovecot. \u0418 \u0434\u0430, \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e. \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f <a href=\"http:\/\/wiki2.dovecot.org\/Migration\/Courier\">wiki2.dovecot.org\/Migration\/Courier<\/a> \u0434\u0430\u0451\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e. \u0412 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u043d\u0435\u0439 \u043f\u043e\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c POP3 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 UIDL \u043d\u0430 \u0441\u0442\u0430\u0440\u043e\u043c \u0438 \u043d\u043e\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043f\u043e\u0434 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0441 \u043d\u0435\u043f\u0443\u0441\u0442\u044b\u043c \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u043c \u044f\u0449\u0438\u043a\u043e\u043c, \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u041e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438, \u0438\u043d\u0430\u0447\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u043a\u0430\u0447\u0430\u0435\u0442 \u0432\u0441\u044e \u043f\u043e\u0447\u0442\u0443 \u0438\u0437 \u044f\u0449\u0438\u043a\u0430 \u0437\u0430\u043d\u043e\u0432\u043e.<br \/>  \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u043d\u043e\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0430\u043f\u043a\u0438 \u0438 \u0444\u0430\u0439\u043b\u044b<br \/> \n<pre><code class=\"bash\">find . -name &quot;courier*&quot; -delete <\/code><\/pre>\n<\/li>\n<li>\u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u0440\u043e iptables \u2014 \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b \u0438 \u0441\u043a\u0440\u043e\u0439\u0442\u0435 \u043e\u0442 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u0433\u043b\u0430\u0437 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435.<\/li>\n<li>\u0418\u0434\u0443\u0449\u0438\u0439 \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0435 \u0441 CentOS \u043b\u043e\u0433\u0433\u0435\u0440 rsyslog \u043c\u043d\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f, \u0438 \u044f \u0435\u0433\u043e \u043c\u0435\u043d\u044f\u044e \u043d\u0430 syslog-ng \u0438\u0437 EPEL. \u041a\u0441\u0442\u0430\u0442\u0438, \u043f\u0440\u0438 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0443\u0447\u0430\u0441\u0442\u0438\u0438 syslog-ng \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u0433\u0440\u0430\u0444\u0438\u043a \u0438\u0437 \u0448\u0435\u0441\u0442\u043e\u0439 \u0433\u043b\u0430\u0432\u044b \u2014 \u0441\u0431\u043e\u0440 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0432\u0435\u0434\u0451\u0442\u0441\u044f \u043f\u0443\u0442\u0451\u043c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 \u043b\u043e\u0433\u043e\u0432.<\/li>\n<li>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 vacation \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f, \u043d\u043e \u0432 dovecot \u043d\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u043b\u0430\u0433\u0438\u043d Sieve \u0438 \u00ab\u0430\u0432\u0442\u043e\u043e\u0442\u0432\u0435\u0442\u0447\u0438\u043a\u0430\u00bb \u043d\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0434\u0435\u043b \u00ab\u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435\u00bb. \u0413\u0430\u0439\u0434 \u0438 \u0442\u0430\u043a \u0433\u0438\u0433\u0430\u043d\u0442\u0441\u043a\u0438\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f.<\/li>\n<\/ol>\n<p>  <font color=\"darkred\">\u041f\u043e\u0447\u0442\u0438 \u043f\u043e\u043b\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u044f \u0432\u044b\u043b\u043e\u0436\u0438\u043b <a href=\"https:\/\/github.com\/Haran\/Mail.CONF\">\u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431<\/a><\/font>, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0435 \u043f\u043e \u043a\u0443\u0441\u043e\u0447\u043a\u0430\u043c, \u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0444\u0430\u0439\u043b\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e, \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u044f \u0442\u0430\u043a\u0443\u044e \u0436\u0435 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0432\u0441\u0435\u0445 \u0441\u0438\u0441\u0442\u0435\u043c. \u0412 \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432 \u0444\u0430\u0439\u043b\u044b \u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u0440\u0430\u0437\u0443 \u0438 \u0443 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0447\u0442\u043e \u0437\u0430 \u0447\u0435\u043c \u0438\u0434\u0451\u0442 \u0438 \u043a\u0430\u043a \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u042f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u043f\u043e\u044d\u0442\u0430\u043f\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u0410\u0432\u043e\u0441\u044c, \u043a\u043e\u043c\u0443-\u0442\u043e \u0434\u0430 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f.<\/p>\n<p>  \u0415\u0449\u0451 \u0440\u0430\u0437 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443, \u0447\u0442\u043e <i>\u044d\u0442\u043e \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u044d\u0442\u0430\u043f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438<\/i>. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0440\u0430\u0439\u043d\u0435 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u0435\u043d \u043d\u0430 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0440\u0430\u0431\u043e\u0442\u044b \u0435\u0449\u0451 \u043d\u0435\u043f\u043e\u0447\u0430\u0442\u044b\u0439 \u043a\u0440\u0430\u0439. \u041e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0430\u043d\u0442\u0438\u0441\u043f\u0430\u043c \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438; \u0435\u0441\u043b\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u043b\u0435\u0438, \u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432; \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0432\u0435\u0440\u044f\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0438 \u0442.\u043f.<\/p>\n<p>  \u041d\u043e \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0431\u0443 \u043f\u0435\u0440\u0430 \u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d\u043d\u043e\u0439. \u0412 \u043f\u043b\u0430\u043d\u0430\u0445 \u0435\u0441\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0443\u0436\u0435 \u043d\u0435 \u0434\u043b\u044f \u00ab\u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445\u00bb \u0438 \u043d\u0435 \u043f\u043e \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443, \u043d\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043e\u0448\u043a\u0430\u0445. \u041a\u0442\u043e \u0434\u043e\u0447\u0438\u0442\u0430\u043b \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430\u2026 \u0433\u043c\u2026 \u0437\u0430\u0432\u0438\u0434\u0443\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0442\u0435\u0440\u043f\u0435\u043d\u0438\u044e, \u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u0435\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u043e\u0441\u044c \u043d\u0435\u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u043c.    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/193220\/\"> http:\/\/habrahabr.ru\/post\/193220\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/737\/fed\/568\/737fed56859bb5e08fa33ace3e0a4bf0.png\" alt=\"image\"\/><\/p>\n<p>  \u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e \u0443\u043d\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0432\u0441\u0442\u0430\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u043e \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u043a\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0412\u0434\u0443\u043c\u0447\u0438\u0432\u043e\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u0430\u043d\u0443\u0430\u043b\u043e\u0432 \u0438 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u0444\u0430\u043a\u0442 \u2013 \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u0438\u043b\u0438 \u043f\u043e\u0434\u043e\u0431\u0438\u044f Best Practice \u043f\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044e \u043f\u043e\u0447\u0442\u043e\u0432\u0438\u043a\u0430.<\/p>\n<p>  \u041c\u0430\u043d\u0443\u0430\u043b \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u044b\u0439, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b. \u0413\u0443\u0440\u0443 \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f, \u043d\u043e\u0443-\u0445\u0430\u0443 \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442 \u2013 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0431\u043e\u0440\u043d\u043e\u0439 \u0441\u043e\u043b\u044f\u043d\u043a\u043e\u0439 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432\u0441\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043f\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044e \u043f\u043e\u0447\u0442\u043e\u0432\u0438\u043a\u0430 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u0443.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-193220","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/193220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=193220"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/193220\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=193220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=193220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=193220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}