FreeBSD 'เจคเฉ‡ postfix+dovecot+mysql

เจœเจพเจฃ เจชเจ›เจพเจฃ

เจฎเฉˆเจ‚ เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจฎเฉ‡เจฒ เจธเจฐเจตเจฐ เจฆเจพ เจ…เจงเจฟเจเจจ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจธเฉ€, เจชเจฐ เจฎเฉˆเจ‚ เจนเฉเจฃเฉ‡ เจนเฉ€ เจ‡เจธ เจจเฉ‚เฉฐ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจธเจนเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเจนเฉ€เจ‚ เจฒเฉฑเจญ เจธเจ•เจฟเจ†, เจ‡เจธ เจฒเจˆ เจฎเฉˆเจ‚ เจœเจฟเฉฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจธเจ•เฉ‡ เจ‡เฉฑเจ• เจชเฉเจฐเจ•เจพเจธเจผเจจ เจฒเจฟเจ–เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพเฅค เจ‡เจน เจชเฉเจฐเจ•เจพเจธเจผเจจ เจจเจพ เจธเจฟเจฐเจซ เจชเฉ‹เจธเจŸเจซเจฟเจ•เจธ, เจกเฉ‹เจตเจ•เฉ‹เจŸ, เจฎเจพเจˆเจเจธเจ•เจฏเฉ‚เจเจฒ, เจชเฉ‹เจธเจŸเจซเจฟเจ•เจธเจเจกเจฎเจฟเจจ, เจฌเจฒเจ•เจฟ เจธเจชเฉˆเจฎเจพเจธเฉˆเจธเจฟเจจ, เจ•เจฒเฉˆเจฎเจพเจต-เจฎเจฟเจฒเจŸเจฐ (เจฎเฉ‡เจฒ เจธเจฐเจตเจฐเจพเจ‚ เจฒเจˆ เจ•เจฒเฉˆเจฎเฉ‡เจต เจฆเจพ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจธเฉฐเจธเจ•เจฐเจฃ), เจชเฉ‹เจธเจŸเจ—เฉเจฐเฉ‡, เจ…เจคเฉ‡ เจจเจพเจฒ เจนเฉ€ เจธเจชเฉˆเจฎ เจซเฉ‹เจฒเจกเจฐ (เจกเฉ‹เจตเจ•เฉ‹เจŸ) เจตเจฟเฉฑเจš เจธเจชเฉˆเจฎ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเจจ เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ เจฌเจพเจฐเฉ‡ เจตเฉ€ เจ—เฉฑเจฒ เจ•เจฐเฉ‡เจ—เจพเฅค - pigeonhole).

เจธเจฟเจ–เจฒเจพเจˆ

เจธเจญ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจ‰เจนเจจเจพเจ‚ เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเฉ€เจ เจœเฉ‹ เจ•เฉฐเจฎ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจนเฉ‹เจฃเจ—เฉ‡ (เจชเฉ‹เจธเจŸเจซเจฟเจ•เจธ, เจกเฉ‹เจตเจ•เฉ‹เจŸ เจ…เจคเฉ‡ เจกเฉ‹เจตเจ•เฉ‹เจŸ-เจชเจฟเจœเจจเจนเฉ‹เจฒ เจจเฉ‚เฉฐ เจชเฉ‹เจฐเจŸเจพเจ‚ เจคเฉ‹เจ‚ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจกเฉ‹เจตเจ•เฉ‹เจŸ-เจธเจฟเจตเฉ€, เจธเจฟเจงเจพเจ‚เจค เจตเจฟเฉฑเจš, เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจคเฉ‹เจ‚ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจชเจฐ เจชเฉ‹เจฐเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจจเจตเฉ‡เจ‚ เจธเฉฐเจธเจ•เจฐเจฃ เจนเจจ เจ…เจคเฉ‡ เจ‡เจธ เจฒเจˆ เจ‡เจธ เจ•เจพเจฐเจจ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจกเฉ‹เจตเจ•เฉ‹เจŸ เจกเฉ‹เจตเจ•เฉ‹เจŸ-เจธเจฟเจตเฉ€ เจจเจพเจฒ เจ…เจจเฉเจ•เฉ‚เจฒ เจจเจพ เจนเฉ‹เจตเฉ‡)เฅค เจ†เจ“ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเฉ€เจ:

pkg install apache24 php73 mod_php73 php73-extensions php73-mysqli php73-mbstring php73-openssl clamav-milter postgrey spamassassin mysql57-server openssl wget

เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ…เจธเฉ€เจ‚ เจœเจผเจฐเฉ‚เจฐเฉ€ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ†เจŸเฉ‹เจธเจŸเจพเจฐเจŸ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจพเจ‚เจ—เฉ‡:

#postfix ะธ dovecot ั‚ะฐะบะถะต ะดะพะฑะฐะฒะธะผ, ั‡ั‚ะพะฑั‹ ะฝะต ะฒะพะทะฒั€ะฐั‰ะฐั‚ัŒัั ะบ ัั‚ะพะผัƒ ะฟะพะทะถะต
sysrc postfix_enable="YES"
sysrc dovecot_enable="YES"

sysrc mysql_enable="YES"
sysrc apache24_enable="YES"

sysrc spamd_flags="-u spamd -H /var/spool/spamd"
sysrc spamd_enable="YES"

sysrc postgrey_enable="YES"

sysrc clamav_clamd_enable="YES"
sysrc clamav_milter_enable="YES"
sysrc clamav_freshclam_enable="YES"
#freshclam ะฑัƒะดะตะผ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะบะฐะบ ัะปัƒะถะฑัƒ ะธ ะฟั€ะพะฒะตั€ัั‚ัŒ ะพะฑะฝะพะฒะปะตะฝะธั 12 ั€ะฐะท
sysrc clamav_freshclam_flags="--daemon --checks=12"

เจ†เจ“ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจ:

service apache24 start
service mysql-server start
#ะŸะตั€ะตะด ะทะฐะฟัƒัะบะพะผ spamassassin ะฝะตะพะฑั…ะพะดะธะผะพ ะพะฑะฝะพะฒะธั‚ัŒ ะฑะฐะทั‹ ะธ ัะบะพะผะฟะธะปะธั€ะพะฒะฐั‚ัŒ ะฟั€ะฐะฒะธะปะฐ
sa-update
sa-compile
service sa-spamd start
#ะ’ั‹ะฟะพะปะฝะธั‚ะต ะพะฑะฝะพะฒะปะตะฝะธั ะฑะฐะท clamav ะฟะตั€ะตะด ะทะฐะฟัƒัะบะพะผ
freshclam
service clamav-clamd start
service clamav-freshclam start
service clamav-milter start
#ะŸะตั€ะตะด ะทะฐะฟัƒัะบะพะผ postgrey ะฝะตะพะฑั…ะพะดะธะผะพ ะพั‚ั€ะตะดะฐะบั‚ะธั€ะพะฒะฐั‚ัŒ ัะบั€ะธะฟ ะธะฝะธั†ะธะฐะปะธะทะฐั†ะธะธ(/usr/local/etc/rc.d/postgrey), ะดะปั ั‚ะพะณะพ ั‡ั‚ะพะฑั‹ ะพั‚ะฟั€ะฐะฒะธั‚ะตะปะธ ะฟะตั€ะตะฝะพัะธะปะธััŒ ะฒ "ะฑะตะปั‹ะน" ัะฟะธัะพะบ ะฟะพัะปะต 4-ั… ะฟะพะฟั‹ั‚ะพะบ ะพั‚ะฟั€ะฐะฒะบะธ ะฟะธัะตะผ, ะฝะตะพะฑั…ะพะดะธะผะพ ะฝะฐะนั‚ะธ ัั‚ั€ะพะบัƒ : ${postgrey_flags:=--inet=10023} ะธ ะฟั€ะธะฒะตัั‚ะธ ะตั‘ ะบ ะฒะธะดัƒ:
: ${postgrey_flags:=--inet=10023 --auto-whitelist-clients=4}
service postgrey start

php เจจเฉ‚เฉฐ เจ…เจชเจพเจšเฉ‡ เจ…เจคเฉ‡ เจชเฉ‹เจธเจŸเจซเจฟเจ•เจธ เจเจกเจฎเจฟเจจ เจตเจฟเฉฑเจš เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€เจ†เจ‚ เจฒเจพเจˆเจจเจพเจ‚ httpd.conf เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจจเจพ เจจเจพ เจญเฉเฉฑเจฒเฉ‹:

<FilesMatch ".php$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch ".phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>

<IfModule dir_module>
    DirectoryIndex index.php
</IfModule>

#ะ ั‚ะฐะบะถะต ะฝะตะพะฑั…ะพะดะธะผะพ ะธะทะผะตะฝะธั‚ัŒ ะดะพะผะฐัˆะฝะธะน ะบะฐั‚ะฐะปะพะณ ะดะปั ะบะพั€ั€ะตะบั‚ะฝะพะน ั€ะฐะฑะพั‚ั‹ postfixadmin

DocumentRoot "/usr/local/www/apache24/data/postfixadmin-3.2/public"

เจ…เฉฑเจ—เฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจœเจพเจฃ เจ…เจคเฉ‡ เจชเฉ‹เจธเจŸเจซเจฟเจ•เจธ เจเจกเจฎเจฟเจจ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ

cd /usr/local/www/apache24/data

เจชเฉ‹เจธเจŸเจซเจฟเจ•เจธ เจเจกเจฎเจฟเจจ เจจเฉ‚เฉฐ เจกเจพเจ‰เจจเจฒเฉ‹เจก เจ•เจฐเฉ‹ (เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเฉฐเจธเจ•เจฐเจฃ เจฒเจฟเจ–เจฃ เจฆเฉ‡ เจธเจฎเฉ‡เจ‚ 3.2 เจธเฉ€)

wget --no-check-certificate https://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-3.2/postfixadmin-3.2.tar.gz

เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจชเฉเจฐเจพเจฒเฉ‡เจ– เจจเฉ‚เฉฐ เจ–เฉ‹เจฒเฉเจนเจฃ เจ…เจคเฉ‡ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฆเฉ‡ เจฎเจพเจฒเจ• เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

gzip -d postfixadmin-3.2.tar.gz
tar -xvf postfixadmin-3.2.tar
chown -R www:www /usr/local/www/apache24/data
service apache24 restart

เจ…เฉฑเจ—เฉ‡, เจ…เจธเฉ€เจ‚ เจชเฉ‹เจธเจŸเจซเจฟเจ•เจธเจเจกเจฎเจฟเจจ เจฒเจˆ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจคเจฟเจ†เจฐ เจ•เจฐเจพเจ‚เจ—เฉ‡, mysql-secure-installation เจธเจ•เฉเจฐเจฟเจชเจŸ เจšเจฒเจพเจตเจพเจ‚เจ—เฉ‡ (เจœเฉ‹ เจชเจพเจธเจตเจฐเจก เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจธเจ•เฉเจฐเจฟเจชเจŸ เจตเจฟเฉฑเจš เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹ เจ‰เจธเจจเฉ‚เฉฐ alter user เจ•เจฎเจพเจ‚เจก เจจเจพเจฒ mysql เจตเจฟเฉฑเจš เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€), mysql เจฆเฉ‡ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจฒเจˆ, เจซเจฟเจฐ เจฒเฉŒเจ— เจ•เจฐเฉ‹เฅค mysql เจตเจฟเฉฑเจš, เจ‰เจธเจฆเฉ‡ เจฒเจˆ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจ…เจคเฉ‡ เจ…เจงเจฟเจ•เจพเจฐ เจฌเจฃเจพเจ“:

mysql -p -r
alter user 'root'@'localhost' identified by 'password123';
create database postfix;
grant all privileges on postfix.* to 'postfix'@'localhost' identified by 'password123';
exit

เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ config.inc.php เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจ‡เจธ เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš เจ‡เจน เจซเจพเจˆเจฒ /usr/local/www/apache24/data/postfixadmin-3.2/ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจนเฉˆ, เจ‡เจธ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจˆ เจฒเจพเจˆเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจฟเจ†เจ“ เจฎเฉ‡เจฐเจพ เจฎเจคเจฒเจฌ เจนเฉˆ, เจ‡เจนเจจเจพเจ‚ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ…เจชเจพเจšเฉ‡ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเฉ‹, เจคเฉเจนเจพเจจเฉ‚เฉฐ /usr/local/www/apache24/data/postfixadmin-3.2 เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• templates_c เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจตเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจฎเจพเจฒเจ• www เจจเฉ‚เฉฐ เจธเฉŒเจ‚เจชเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค :

mkdir /usr/local/www/apache24/data/postfixadmin-3.2/templates_c
chown -R www:www /usr/local/www/apache24/data/postfixadmin-3.2/templates_c

$CONF['configured'] = true
#ะดะฐะฝะฝั‹ะน ั…ััˆ ะฝะตะพะฑั…ะพะดะธะผะพ ัะณะตะฝะตั€ะธั€ะพะฒะฐั‚ัŒ ะฒ ะฒัะฑ ะธะฝั‚ะตั€ั„ะตะนัะต postfixadmin ะธ ะดะพะฑะฐะฒะธั‚ัŒ ะฒ ะดะฐะฝะฝัƒัŽ ัั‚ั€ะพะบัƒ.
$CONF['setup_password'] = 'dd28fb2139a3bca426f02f60e6877fd5:13d2703c477b0ab85858e3ac5e076a0a7a477315';
$CONF['default_language'] = 'ru'
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
#ะŸะฐั€ะพะปัŒ ะธ ะธะผั ะฑะฐะท ะดะฐะฝะฝั‹ั… ะธัะฟะพะปัŒะทัƒัŽ ะบะพั‚ะพั€ั‹ะต ัะพะทะดะฐะป ะฒ ะดะฐะฝะฝะพะผ ะฟั€ะธะผะตั€ะต
$CONF['database_password'] = 'password123';
$CONF['database_name'] = 'postfix';

service apache24 restart

SSL เจจเฉ‚เฉฐ

เจ‡เฉฑเจ• เจ•เฉเฉฐเจœเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจตเฉˆเจฌเจธเจพเจˆเจŸ postfix.org 'เจคเฉ‡ เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจตเจฟเจงเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡, เจธเจพเจกเฉ‡ เจ†เจชเจฃเฉ‡ เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ เจ…เจฅเจพเจฐเจŸเฉ€ เจฆเฉ€ เจธเจฟเจฐเจœเจฃเจพ เจฆเฉ‡ เจจเจพเจฒ, เจคเฉเจนเจพเจจเฉ‚เฉฐ /etc/ssl เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ 'เจคเฉ‡ เจœเจพเจฃ เจ…เจคเฉ‡ เจธเจ•เฉเจฐเจฟเจชเจŸ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

cd /etc/ssl
/usr/local/openssl/misc/CA.pl -newca

เจธเจ•เฉเจฐเจฟเจชเจŸ เจฆเฉ‡ เจฒเจพเจ—เฉ‚ เจนเฉ‹เจฃ เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฒเจˆ เจ‡เฉฑเจ• เจจเจพเจฎ เจชเฉเฉฑเจ›เจฟเจ† เจœเจพเจตเฉ‡เจ—เจพ, เจ•เฉเจ เจตเฉ€ เจฆเจพเจ–เจฒ เจจเจพ เจ•เจฐเฉ‹, เจเจ‚เจŸเจฐ เจฆเจฌเจพเจ“, เจซเจฟเจฐ เจธเจ•เฉเจฐเจฟเจชเจŸ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฒเจˆ เจชเจพเจธเจตเจฐเจก เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ•เจนเฉ‡เจ—เฉ€, เจซเจฟเจฐ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจฎเจฟเจ†เจฐเฉ€ เจชเฉเจฐเจธเจผเจจ เจนเฉ‹เจฃเจ—เฉ‡เฅค .

เจ…เฉฑเจ—เฉ‡, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเฉเจฐเจพเจˆเจตเฉ‡เจŸ เจ•เฉเฉฐเจœเฉ€ (เจฌเจฟเจจเจพเจ‚ เจชเจพเจธเจตเจฐเจก เจฆเฉ‡) เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจนเจธเจคเจพเจ–เจฐเจฟเจค เจœเจจเจคเจ• เจ•เฉเฉฐเจœเฉ€ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ (เจธเฉฐเจ—เจ เจจ เจฏเฉ‚เจจเจฟเจŸ เจฆเจพ เจจเจพเจฎ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจธเฉˆเจ•เจธเจผเจจ) [] เจจเฉ‚เฉฐ เจ‰เฉฑเจชเจฐ เจฌเจฃเจพเจ เจ—เจ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจตเจฟเฉฑเจš เจฆเจฐเจธเจพเจ เจ—เจ เจจเจพเจฒเฉ‹เจ‚ เจตเฉฑเจ–เจฐเจพ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ:

openssl req -new -newkey rsa:4096 -nodes -keyout foo-key.pem -out foo-req.pem

เจšเจฒเฉ‹ เจœเจจเจคเจ• เจ•เฉเฉฐเจœเฉ€ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ 'เจคเฉ‡ เจฆเจธเจคเจ–เจค เจ•เจฐเฉ€เจ (เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœ เจ…เจจเฉเจธเจพเจฐ เจฆเจฟเจจเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจฆเจฐเจธเจพเจ“):

openssl ca -out foo-cert.pem -days 365 -infiles foo-req.pem

เจ‡เจธ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจฌเจฃเจพเจ เจ—เจ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจ›เฉฑเจกเฉ‹, เจœเจพเจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเฉ‹ เจœเฉ‹ เจคเฉเจนเจพเจกเฉ‡ เจฒเจˆ เจตเจงเฉ‡เจฐเฉ‡ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆ, เจชเฉ‹เจธเจŸเจซเจฟเจ•เจธ เจ…เจคเฉ‡ เจกเฉ‹เจตเจ•เฉ‹เจŸ โ€œเจ•เจจเจซเจฟเจ—เจฐเจธโ€ เจจเฉ‚เฉฐ เจ‡เจธ เจคเฉฑเจฅ เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฆเฉ‡ เจนเฉ‹เจ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ เจ•เจฟ เจธเจฐเจŸเฉ€เจซเจฟเจ•เฉ‡เจŸ เจ‡เจธ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจนเฉ‹เจฃเจ—เฉ‡เฅค

เจ‰เจชเจญเฉ‹เจ—เจคเจพ vmail

เจ‡เจธ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจชเฉ‹เจธเจŸเจซเจฟเจ•เจธ, เจกเฉ‹เจตเจ•เฉ‹เจŸ เจ…เจคเฉ‡ เจกเฉ‹เจตเจ•เฉ‹เจŸ-เจชเจฟเจœเจจเจนเฉ‹เจฒ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจ, เจ†เจ“ เจ‡เฉฑเจ• เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ…เจคเฉ‡ เจธเจฎเฉ‚เจน (เจธเจฎเฉ‚เจน เจ†เจชเจฃเฉ‡ เจ†เจช เจนเฉ€ เจฌเจฃเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพ) vmail, เจ…เจคเฉ‡ เจจเจพเจฒ เจนเฉ€ เจ‰เจน เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจœเจฟเจธ เจตเจฟเฉฑเจš เจฎเฉ‡เจฒ เจธเจฅเจฟเจค เจนเฉ‹เจตเฉ‡เจ—เฉ€, เจฌเจฃเจพเจˆเจเฅค

pw useradd -n vmail -s /usr/sbin/nologin -u 1000 -d /var/vmail

เจšเจฒเฉ‹ เจฎเฉ‡เจฒ เจฒเจˆ เจ‡เฉฑเจ• เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฌเจฃเจพเจˆเจ เจ…เจคเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพ vmail เจจเฉ‚เฉฐ เจฎเจพเจฒเจ• เจตเจœเฉ‹เจ‚ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเฉ€เจ:

mkdir /var/vmail
chown -R vmail:vmail /var/vmail
chmod -R 744 /var/vmail

Postfix, dovecot, dovecot-pigeonhole

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจฎเฉˆเจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจฒเจฟเจ–เจฟเจ† เจธเฉ€, เจ…เจธเฉ€เจ‚ เจชเฉ‹เจฐเจŸเจพเจ‚ เจคเฉ‹เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจพเจ‚เจ—เฉ‡, เจชเฉ‹เจฐเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจ…เจคเฉ‡ เจ…เจจเจชเฉˆเจ• เจ•เจฐเจจ เจฒเจˆ เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจตเจพเจ‚เจ—เฉ‡:

portsnap fetch extract

เจชเฉ‹เจฐเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจจเจชเฉˆเจ• เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจกเฉ‹เจตเจ•เฉ‹เจŸ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ 'เจคเฉ‡ เจœเจพเจ“, เจชเฉ‹เจฐเจŸ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเฉ‹ (mysql เจธเจนเจพเจ‡เจคเจพ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ) เจ…เจคเฉ‡ เจฌเจฟเจฒเจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ“ (BATCH=yes เจฎเฉ‡เจ• เจจเฉ‚เฉฐ เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจฆเฉŒเจฐเจพเจจ เจธเจตเจพเจฒ เจจเจพ เจชเฉเฉฑเจ›เจฃ เจฒเจˆ เจฆเฉฑเจธเฉ‡เจ—เจพ):

cd /usr/ports/mail/dovecot
make config
make BATCH=yes install clean

เจชเฉ‹เจธเจŸเจซเจฟเจ•เจธ เจ…เจคเฉ‡ เจกเฉ‹เจตเจ•เฉ‹เจŸ-เจชเจฟเจœเจจเจนเฉ‹เจฒ เจจเจพเจฒ เจ‰เจนเฉ€ เจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจ•เจฐเฉ‹

เจ˜เฉเฉฑเจ—เฉ€-เจ•เจฌเฉ‚เจคเจฐ:

cd /usr/ports/mail/dovecot-pigeonhole
make BATCH=yes install clean

เจชเฉ‹เจธเจŸเจซเจฟเจ•เจธ: mysql เจธเจนเจพเจ‡เจคเจพ เจฒเจˆ เจชเฉ‹เจฐเจŸ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจฆเฉ€ เจตเฉ€ เจœเจพเจ‚เจš เจ•เจฐเฉ‹

cd  /usr/ports/mail/postfix-sasl
make config
make BATCH=yes install clean

dovecot เจšเจฒเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, "configs" เจจเฉ‚เฉฐ เจ•เจพเจชเฉ€ เจ•เจฐเฉ‹:

 cp -R /usr/local/etc/dovecot/example-config/*  /usr/local/etc/dovecot

เจชเฉ‹เจธเจŸเจซเจฟเจ•เจธ เจ…เจคเฉ‡ เจกเฉ‹เจตเจ•เฉ‹เจŸ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจธเฉ‡เจตเจพเจตเจพเจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ‹:

service postfix start
service dovecot start

เจ‡เฉฑเจ• เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฌเจฃเจพเจ‰เจฃเจพ เจตเฉ€ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจชเฉˆเจฎ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจธเจชเฉˆเจฎ เจญเฉ‡เจœเจฃ เจฒเจˆ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ, เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เจน เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ /usr/local/etc/dovecot/conf.d เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจนเฉˆ, เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฆเจพ เจจเจพเจฎ เจนเฉˆ def, เจ…เจธเฉ€เจ‚ เจ‡เจธ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจ…เจคเฉ‡ เจธเฉฐเจ•เจฒเจจ เจฒเจˆ เจ•เฉ‹เจก เจตเจพเจฒเฉ€ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจฌเจฃเจพเจตเจพเจ‚เจ—เฉ‡ เจ…เจคเฉ‡ เจ‡เจธ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฆเฉ‡ เจฎเจพเจฒเจ• เจจเฉ‚เฉฐ เจ‰เจชเจญเฉ‹เจ—เจคเจพ vmail เจคเฉ‡ เจธเฉˆเฉฑเจŸ เจ•เจฐเจพเจ‚เจ—เฉ‡:

mkdir /usr/local/etc/dovecot/conf.d/def
touch /usr/local/etc/dovecot/conf.d/def/default.sieve
chown -R vmail:vmail /usr/local/etc/dovecot/conf.d/def
chmod -R 744 /usr/local/etc/dovecot/conf.d/def

เจ‡เจธ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจฒเจพเจˆเจจเจพเจ‚ เจฐเฉฑเจ–เฉ‹:

require "fileinto";
if header :contains "X-Spam-Flag" "YES" {
    fileinto "Junk";
}

"เจธเฉฐเจฐเจšเจจเจพ"

เจ‡เจธ เจญเจพเจ— เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจฆเฉ‡ เจจเจพเจฒ "เจ•เจจเจซเจฟเจ—เจธ" เจฆเฉ€เจ†เจ‚ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจฆเฉ‡เจตเจพเจ‚เจ—เจพ, เจฎเฉˆเจจเฉ‚เฉฐ เจธเจฟเจฐเจซ เจธเจชเฉˆเจฎเจพเจธเจพเจธเจฟเจจ เจฆเฉ€ "เจธเฉฐเจฐเจšเจจเจพ" 'เจคเฉ‡ เจธเจผเฉฑเจ• เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฎเฉˆเจจเฉ‚เฉฐ เจจเฉˆเฉฑเจŸเจตเจฐเจ• 'เจคเฉ‡ เจธเจนเฉ€ เจตเจฐเจฃเจจ เจจเจนเฉ€เจ‚ เจฎเจฟเจฒเจฟเจ† (เจฎเฉˆเจ‚ เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš "เจธเฉฐเจฐเจšเจจเจพ" เจจเฉ‚เฉฐ เจ›เฉฑเจก เจฆเจฟเฉฑเจคเจพ), เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹ เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจ•เจฟ เจธเจชเฉˆเจฎเจพเจธเจพเจธเจฟเจจ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐเจจเจพ เจนเฉˆเฅค

เจชเฉ‹เจธเจŸเจซเจฟเจ•เจธ

เจชเจนเจฟเจฒเจพ เจ•เจฆเจฎ เจนเฉˆ เจกเจพเจŸเจพเจฌเฉ‡เจธ เจคเฉ‹เจ‚ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚, เจกเฉ‹เจฎเฉ‡เจจเจพเจ‚, เจ•เฉ‹เจŸเจพ เจจเฉ‚เฉฐ เจ–เจฟเฉฑเจšเจฃ เจฒเจˆ เจซเจพเจˆเจฒเจพเจ‚ เจฌเจฃเจพเจ‰เจฃเจพ. เจ‡เจนเจจเจพเจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจ…เจคเฉ‡ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฌเจฃเจพเจ“:

mkdir /usr/local/etc/postfix/mysql
touch /usr/local/etc/postfix/mysql/relay_domains.cf
touch /usr/local/etc/postfix/mysql/virtual_alias_maps.cf
touch /usr/local/etc/postfix/mysql/virtual_alias_domain_maps.cf
touch /usr/local/etc/postfix/mysql/virtual_mailbox_maps.cf

เจ‡เจนเจจเจพเจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจนเฉ‹เจตเฉ‡เจ—เฉ€:
relay_domains.cf

hosts = 127.0.0.1
user = postfix
password = password123
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1'

virtual_alias_maps.cf

hosts = 127.0.0.1
user = postfix
password = password123
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active ='1'

virtual_alias_domain_maps.cf

hosts = 127.0.0.1
user = postfix
password = password123
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'

virtual_mailbox_maps.cf

hosts = 127.0.0.1
user = postfix
password = password123
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND  active = '1'

master.cf

#ะฃะบะฐะทะฐั‚ัŒ postfix ะพ ั‚ะพะผ, ั‡ั‚ะพ ะฝะตะพะฑั…ะพะดะธะผะพ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ dovecot ะดะปั ะดะพัั‚ะฐะฒะบะธ ะฟะพั‡ั‚ั‹
dovecot unix - n n - - pipe
    flags=DRhu user=vmail:vmail argv=/usr/local/libexec/dovecot/deliver -f ${sender} -d ${recipient}

#ะฃะบะฐะถะตะผ ัะปัƒะถะฑะต smtpd ะพ ะฒะพะทะผะพะถะฝะพัั‚ะธ ะฐะฒั‚ะพั€ะธะทะพะฒะฐั‚ัŒัั ั‡ะตั€ะตะท sasl, ะฐ ั‚ะฐะบะถะต ะพ ั‚ะพะผ, ั‡ั‚ะพ spamassassin ะฑัƒะดะตั‚ ั„ะธะปัŒั‚ั€ะพะฒะฐั‚ัŒ ะฟะพั‡ั‚ัƒ
smtp      inet  n       -       n       -       -       smtpd
  -o content_filter=spamassassin
  -o smtpd_sasl_auth_enable=yes

#ะ˜ัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะฟะพั€ั‚ 587 ะธ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะฐะฒั‚ะพั€ะธะทะฐั†ะธะธ ั‡ะตั€ะตะท sasl
submission inet n       -       n       -       -       smtpd
 -o smtpd_sasl_auth_enable=yes

#ะฃะบะฐะทะฐั‚ัŒ ัะปัƒะถะฑะต smtp ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะฐะฒั‚ะพั€ะธะทะฐั†ะธัŽ ั‡ะตั€ะตะท SASL
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_tls_wrappermode=yes

#ะ˜ัะฟะพะปัŒะทะพะฒะฐั‚ัŒ Spamassassin
spamassassin   unix  -       n       n       -       -       pipe
   flags=DROhu user=vmail:vmail argv=/usr/local/bin/spamc -f -e
   /usr/local/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop}

#628       inet  n       -       n       -       -       qmqpd
pickup    unix  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
#qmgr     unix  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp
        -o syslog_name=postfix/$service_name
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache
postlog   unix-dgram n  -       n       -       1       postlogd

main.cf

#ะ•ัะปะธ ะฝะต ัƒะบะฐะทะฐั‚ัŒ ะฒ ะดะฐะฝะฝะพะผ ะฟะฐั€ะฐะผะตั‚ั€ะต ะทะฝะฐั‡ะตะฝะธะต dovecot, ั‚ะพ ะฟะพั‡ั‚ะฐ ะฑัƒะดะตั‚ ะฟะพัั‚ัƒะฟะฐั‚ัŒ ะปะพะบะฐะปัŒะฝั‹ะผ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัะผ
local_transport = dovecot

#ะะต ั‡ัƒะฒัั‚ะฒะธั‚ะตะปัŒะฝั‹ะน ะบ ั€ะตะณะธัั‚ั€ัƒ ัะฟะธัะพะบ ะบะปัŽั‡ะตะฒั‹ั… ัะปะพะฒ, ะบะพั‚ะพั€ั‹ะต SMTP-ัะตั€ะฒะตั€ ะฝะต ะฑัƒะดะตั‚ ะพั‚ะฟั€ะฐะฒะปัั‚ัŒ ะฒ ะพั‚ะฒะตั‚ะต EHLO ัƒะดะฐะปั‘ะฝะฝะพะผัƒ SMTP ะบะปะธะตะฝั‚ัƒ
smtpd_discard_ehlo_keywords = CONNECT GET POST

#ะŸะพะดะพะถะดะฐั‚ัŒ ะฟะพะบะฐ ะฟั€ะธะดั‘ั‚ ะฒัั ะธะฝั„ะพั€ะผะฐั†ะธั ะพ ะบะปะธะตะฝั‚ะต ะธ ั‚ะพะปัŒะบะพ ะฟะพั‚ะพะผ ะฟั€ะธะผะตะฝะธั‚ัŒ ะพะณั€ะฐะฝะธั‡ะตะฝะธั
smtpd_delay_reject = yes

#ะขั€ะตะฑะพะฒะฐั‚ัŒ ะฝะฐั‡ะธะฝะฐั‚ัŒ ัะตััะธัŽ ั ะฟั€ะธะฒะตั‚ัั‚ะฒะธั
smtpd_helo_required = yes

#ะ—ะฐะฟั€ะตั‚ะธั‚ัŒ ัƒะทะฝะฐะฒะฐั‚ัŒ ััƒั‰ะตัั‚ะฒัƒะตั‚ ะพะฟั€ะตะดะตะปั‘ะฝะฝั‹ะน ะฟะพั‡ั‚ะพะฒั‹ะน ัั‰ะธะบ, ะธะปะธ ะฝะตั‚
disable_vrfy_command = yes

#ะญั‚ะพั‚ ะฟะฐั€ะฐะผะตั‚ั€ ะฝะตะพะฑั…ะพะดะธะผ ะดะปั ั€ะฐะฑะพั‚ั‹ ัƒัั‚ะฐั€ะตะฒัˆะธั… ะบะปะธะตะฝั‚ะพะฒ
broken_sasl_auth_clients = yes

#ะ—ะฐะฟั€ะตั‚ะธั‚ัŒ ะฐะฝะพะฝะธะผะฝัƒัŽ ะฐะฒั‚ะพั€ะธะทะฐั†ะธัŽ
smtpd_sasl_security_options = noanonymous noactive nodictionary
smtp_sasl_security_options = noanonymous noactive nodictionary

#ะ˜ัะฟะพะปัŒะทะพะฒะฐั‚ัŒ dovecot ะดะปั ะฐะฒั‚ะพั€ะธะทะฐั†ะธะธ(ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ cyrus)
smtpd_sasl_type = dovecot
smtp_sasl_type = dovecot

#ะฟัƒั‚ัŒ ะดะพ ะฟะปะฐะณะธะฝะฐ ะฐัƒั‚ะตะฝั‚ะธั„ะธะบะฐั†ะธะธ
smtpd_sasl_path = private/auth

#ะกะฟะธัะพะบ ััƒั‰ะตัั‚ะฒัƒัŽั‰ะธั… ะฟะพะปัŒะทะพะฒะฐั‚ะตะปะตะน
local_recipient_maps = $virtual_mailbox_maps $virtual_alias_maps

#ะ•ัะปะธ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั ะฝะต ััƒั‰ะตัั‚ะฒัƒะตั‚, ั‚ะพะณะดะฐ ะพั‚ะบะปะพะฝะธั‚ัŒ ะฟะพั‡ั‚ัƒ
smtpd_reject_unlisted_recipient = yes

#ะ›ะธะผะธั‚ั‹ ั€ะฐะทะผะตั€ะฐ ะฟะธัะตะผ
message_size_limit = 10485760

#ะšะฐะถะดั‹ะน ะฟะพะปัƒั‡ะฐั‚ะตะปัŒ ะฟะพะปัƒั‡ะธั‚ ะธะฝะดะธะฒะธะดัƒะฐะปัŒะฝัƒัŽ ะพะฑั€ะฐะฑะพั‚ะบัƒ spamassassin
spamassassin_destination_recipient_limit = 1

#ะะฝั‚ะธะฒะธั€ัƒั
milter_default_action = accept
milter_protocol = 2
#ะŸัƒั‚ัŒ ะดะพ ัะพะบะตั‚ะฐ clamav
smtpd_milters = unix:/var/run/clamav/clmilter.sock
non_smtpd_milters = unix:/var/run/clamav/clmilter.sock


#MYSQL
relay_domains = mysql:/usr/local/etc/postfix/mysql/relay_domains.cf
virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql/virtual_alias_maps.cf, mysql:/usr/local/etc/postfix/mysql/virtual_alias_domain_maps.cf
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql/virtual_mailbox_maps.cf

#ะŸั€ะพะฒะตั€ะบะฐ HELO
smtpd_helo_restrictions = permit_sasl_authenticated, reject_non_fqdn_helo_hostname, reject_invalid_hostname

#ะžะณั€ะฐะฝะธั‡ะตะฝะธั ะดะปั ัะพะดะตั€ะถะธะผะพะณะพ ะฟะธัะตะผ
smtpd_data_restrictions = permit_sasl_authenticated reject_unauth_pipelining, reject_multi_recipient_bounce

#ะŸั€ะฐะฒะธะปะฐ ะพั‚ะฟั€ะฐะฒะบะธ ะฟะพั‡ั‚ั‹
smtpd_sender_restrictions = permit_sasl_authenticated reject_sender_login_mismatch,reject_unauthenticated_sender_login_mismatch, reject_non_fqdn_sender, reject_unknown_sender_domain

#ะŸั€ะฐะฒะธะปะฐ ะฟั€ะธั‘ะผะฐ ะฟะพั‡ั‚ั‹(check_policy_service inet:127.0.0.1:10023 ะฟะฐั€ะฐะผะตั‚ั€ postgrey - ะทะฐะฟั€ะตั‰ะฐะตั‚ ะฟั€ะธั‘ะผ ะฟะพั‡ั‚ั‹ ั ะฟะตั€ะฒะพะณะพ ั€ะฐะทะฐ)
smtpd_recipient_restrictions = permit_sasl_authenticated reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_multi_recipient_bounce, reject_unknown_client_hostname, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023


#ะŸะฐะฟะบะฐ ะดะปั ะฟะพั‡ั‚ั‹
virtual_mailbox_base = /var/vmail

#uid ะธ gid vmail
virtual_minimum_uid = 1000
virtual_uid_maps = static:1000
virtual_gid_maps = static:1000

#ะฃะบะฐะทะฐั‚ัŒ ะฒะธั€ั‚ัƒะฐะปัŒะฝั‹ะน ั‚ั€ะฐะฝัะฟะพั€ั‚
virtual_transport = devecot
dovecot_destination_recipient_limit = 1


#ะะฐัั‚ั€ะพะนะบะธ ัˆะธั„ั€ะพะฒะฐะฝะธั
smtp_use_tls=yes
smtp_tls_note_starttls_offer=yes
#ัั‚ั€ะพะบะฐ smtp_tls_security_level=encrypt ะพั‚ะฒะตั‡ะฐะตั‚ ะทะฐ ะพั‚ะฟั€ะฐะฒะบัƒ ะฟะพั‡ั‚ัƒ ั‚ะพะปัŒะบะพ ั‡ะตั€ะตะท ssl, ะตัะปะธ ัะตั€ะฒะตั€ ะฝะต ะฟะพะดะดะตั€ะถะธะฒะฐะตั‚ ะฟั€ะธั‘ะผ ะฟะพั‡ั‚ั‹ ั‡ะตั€ะตะท ssl, ั‚ะพะณะดะฐ ะฝะตะพะฑั…ะพะดะธะผะพ ะฟะพัั‚ะฐะฒะธั‚ัŒ smtp_tls_security_level=may(ะตัะปะธ ัะตั€ะฒะตั€ ะฝะต ะฟะพะดะดะตั€ะถะธะฒะฐะตั‚ ssl, ั‚ะพ ะพั‚ะฟั€ะฐะฒะธั‚ัŒ ะฒ ะพั‚ะบั€ั‹ั‚ะพะผ ะฒะธะดะต)
smtp_tls_security_level=encrypt
smtp_tls_session_cache_database=btree:$data_directory/smtp_tls_session_cache
smtp_tls_CAfile=/etc/ssl/demoCA/cacert.pem
smtp_tls_key_file=/etc/ssl/foo-key.pem
smtp_tls_cert_file=/etc/ssl/foo-cert.pem
smtp_tls_session_cache_timeout=3600s
smtp_tls_protocols=!TLSv1.2
smtp_tls_loglevel=1

#ัั‚ั€ะพะบะฐ smtpd_tls_security_level=encrypt ะพั‚ะฒะตั‡ะฐะตั‚ ะทะฐ ะพั‚ะฟั€ะฐะฒะบัƒ ะฟะพั‡ั‚ัƒ ั‚ะพะปัŒะบะพ ั‡ะตั€ะตะท ssl, ะตัะปะธ ัะตั€ะฒะตั€ ะฝะต ะฟะพะดะดะตั€ะถะธะฒะฐะตั‚ ะฟั€ะธั‘ะผ ะฟะพั‡ั‚ั‹ ั‡ะตั€ะตะท ssl, ั‚ะพะณะดะฐ ะฝะตะพะฑั…ะพะดะธะผะพ ะฟะพัั‚ะฐะฒะธั‚ัŒ smtpd_tls_security_level=may(ะตัะปะธ ัะตั€ะฒะตั€ ะฝะต ะฟะพะดะดะตั€ะถะธะฒะฐะตั‚ ssl, ั‚ะพ ะพั‚ะฟั€ะฐะฒะธั‚ัŒ ะฒ ะพั‚ะบั€ั‹ั‚ะพะผ ะฒะธะดะต)
smtpd_tls_security_level=encrypt
smtpd_use_tls=yes
smtpd_tls_auth_only=yes
smtpd_tls_loglevel=1
smtpd_tls_received_header=yes
smtpd_tls_session_cache_timeout=3600s
smtpd_tls_session_cache_database=btree:$data_directory/smtpd_tls_session_cache
smtpd_tls_key_file=/etc/ssl/foo-key.pem
smtpd_tls_cert_file=/etc/ssl/foo-cert.pem
smtpd_tls_CAfile= /etc/ssl/demoCA/cacert.pem
smtpd_tls_protocols=!TLSv1.2

#ะŸัƒั‚ัŒ ะดะพ ัƒัั‚ั€ะพะนัั‚ะฒะฐ ะณะตะฝะตั€ะฐั‚ะพั€ะฐ ัะปัƒั‡ะฐะนะฝั‹ั… ั‡ะธัะตะป
tls_random_source=dev:/dev/urandom

#ะžะฑั€ะฐั‚ะฝะฐั ัะพะฒะผะตัั‚ะธะผะพัั‚ัŒ
compatibility_level = 2

#ะกะพะพะฑั‰ะธั‚ัŒ ะบะปะธะตะฝั‚ัƒ ะพ ั‚ะพะผ, ั‡ั‚ะพ ะฟะพั‡ั‚ะฐ ะฝะต ะพั‚ะบะปะพะฝะตะฝะฐ, ะฐ ะฝะตะพะฑั…ะพะดะธะผะพ ะพั‚ะฟั€ะฐะฒะธั‚ ะตะต ะตั‰ั‘ ั€ะฐะท, ะฝะพ ะฝะตะผะฝะพะณะพ ะฟะพะทะถะต
soft_bounce = no

#ะกะธัั‚ะตะผะฝะฐั ัƒั‡ั‘ั‚ะฝะฐั ะทะฐะฟะธััŒ UNIX ะธะท ะฟะพ ะบะพั‚ะพั€ะพะน ะทะฐะฟัƒัะบะฐะตั‚ัั ะธ ั€ะฐะฑะพั‚ะฐะตั‚ postfix
mail_owner = postfix

#ะ˜ะผั ั…ะพัั‚ะฐ ะฝะฐ ะบะพั‚ะพั€ะพะผ ั€ะฐะทะฒั‘ั€ะฝัƒั‚ postfix(ะฒ ะดะฐะฝะฝะพะผ ะฟั€ะธะผะตั€ะต ะธะผั ะดะพะผะตะฝะฐ ะธ ะธะผั ั…ะพัั‚ะฐ ัะพะฒะฟะฐะดะฐัŽั‚)
myhostname = $mydomain

#ะ’ ะดะฐะฝะฝะพะผ ะฟะฐั€ะฐะผะตั‚ั€ะต ะฝะตะพะฑั…ะพะดะธะผะพ ัƒะบะฐะทะฐั‚ัŒ ะธะผั ะดะพะผะตะฝะฐ
mydomain = virusslayer.su
myorigin = $myhostname

#ะšะฐะบะธะต ะธะฝั‚ะตั€ั„ะตะนัั‹ ะฝะตะพะฑั…ะพะดะธะผะพ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ
inet_interfaces = all

#ะกะฟะธัะพะบ ะดะพะผะตะฝะพะฒ ะฝะฐ ะบะพั‚ะพั€ั‹ะต ะฑัƒะดะตั‚ ะพััƒั‰ะตัั‚ะฒะปัั‚ัŒัั ะดะพัั‚ะฐะฒะบะฐ ะฟะพั‡ั‚ั‹
mydestination = $mydomain, localhost, localhost.$mydomain

#ะžั‚ะฟั€ะฐะฒะปัะตั‚ ะบะพะด ะพั‚ะฒะตั‚ะฐ 550 ะพั‚ะฟั€ะฐะฒะธั‚ะตะปัŽ ะบะพั‚ะพั€ั‹ะน ะฟั‹ั‚ะฐะตั‚ัั ะพั‚ะฟั€ะฐะฒะธั‚ัŒ ะฟะธััŒะผะพ ะฝะต ััƒั‰ะตัั‚ะฒัƒัŽั‰ะตะผัƒ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŽ
unknown_local_recipient_reject_code = 550

#ะฟะตั€ะตัั‹ะปะฐั‚ัŒ ะฟะพั‡ั‚ัƒ ั‚ะพะปัŒะบะพ ะพั‚ localhost
mynetworks_style = host

#ะ’ ะดะฐะฝะฝะพะผ ะฟะฐั€ะฐะผะตั‚ั€ะต ะฝะต ะฝัƒะถะฝะพ ะฝะต ั‡ะตะณะพ ัƒะบะฐะทั‹ะฒะฐั‚ัŒ, ั‚ะฐะบ-ะบะฐะบ ะฟะพะดัะตั‚ะธ ัƒะบะฐะทะฐะฝะฝั‹ะต ะฒ ะดะฐะฝะฝะพะผ ะฟะฐั€ะฐะผะตั‚ั€ะต ะฑัƒะดัƒั‚ ัั‡ะธั‚ะฐั‚ัŒัั ะฟั€ะธะฒะธะปะตะณะธั€ะพะฒะฐะฝะฝั‹ะผะธ
mynetworks =

#ะ’ะตั€ัะธั ะฟั€ะพั‚ะพะบะพะปะฐ ip
inet_protocols = ipv4

#ะะปะธะฐัั‹ ะปะพะบะฐะปัŒะฝั‹ั… ะฟะพะปัŒะทะพะฒะฐั‚ะตะปะตะน(ะตัะปะธ ะบะพะฝะตั‡ะฝะพ ัั‚ะพ ะฝะตะพะฑั…ะพะดะธะผะพ)
alias_maps = hash:/etc/mail/aliases
alias_database = dbm:/etc/mail/aliases.db

#ะ”ะฐะฝะฝั‹ะผ ัะพะพะฑั‰ะตะฝะธะตะผ ัะตั€ะฒะตั€ ะฑัƒะดะตั‚ ะฟั€ะตะดัั‚ะฐะฒะปัั‚ัŒัั ะฟั€ะธ ะพั‚ะฟั€ะฐะฒะบะต ะธ ะฟะพะปัƒั‡ะตะฝะธะธ ะฟะพั‡ั‚ั‹
smtpd_banner = $myhostname ESMTP $mail_name

#ะฃะบะฐะทะฐั‚ัŒ ะฝะฐ ัะบะพะปัŒะบะพ ะฟะพะดั€ะพะฑะฝั‹ะผ ะดะพะปะถะตะฝ ะฑั‹ั‚ัŒ ะพั‚ั‡ั‘ั‚
debug_peer_level = 2

#ะฃะบะฐะทะฐั‚ัŒ ะผะตะถะดัƒ ะบะฐะบะธะผะธ ะดะพะผะตะฝะฐะผะธ ะพั‚ัะปะบะถะธะฒะฐั‚ัŒ ะฟะตั€ะตัั‹ะปะบัƒ (ะดะปั ะทะฐะฟะธัะธ ะฒ ะปะพะณ, ะผะพะถะฝะพ ัƒะบะฐะทะฐั‚ัŒ ะฝะฐะฟั€ะธะผะตั€ yandex.ru gmail.ru mail.ru ะธ ั‚.ะด.)
debug_peer_list = 127.0.0.1

#ะŸัƒั‚ัŒ ะดะพ ะพั‚ะปะฐะดั‡ะธะบะฐ
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id & sleep 5

#ะกะพะฒะผะตัั‚ะธะผะพัั‚ัŒ ั sendmail
sendmail_path = /usr/local/sbin/sendmail
mailq_path = /usr/local/bin/mailq


setgid_group = maildrop

#ะŸัƒั‚ะธ ะดะพ ั€ะฐะทะปะธั‡ะฝั‹ั… ะบะฐั‚ะฐะปะพะณะพะฒ
html_directory = /usr/local/share/doc/postfix
manpage_directory = /usr/local/man
sample_directory = /usr/local/etc/postfix
readme_directory = /usr/local/share/doc/postfix
meta_directory = /usr/local/libexec/postfix
shlib_directory = /usr/local/lib/postfix
queue_directory = /var/spool/postfix
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
data_directory = /var/db/postfix

เจกเฉ‹เจตเจ•เฉ‹เจŸ

dovecot.conf

#ะŸั€ะพั‚ะพะบะพะปั‹ ั ะบะพั‚ะพั€ั‹ะผะธ ะฑัƒะดะตั‚ ั€ะฐะฑะพั‚ะฐั‚ัŒ dovecot
protocols = imap pop3

#ะšะฐะบะธะต ะฐะดั€ะตัะฐ ะฝะตะพะฑั…ะพะดะธะผะพ ัะปัƒัˆะฐั‚ัŒ
listen = *, ::

#ะŸัƒั‚ัŒ ะดะพ ั„ะฐะนะปะฐ ั ะฟะฐั€ะฐะผะตั‚ั€ะฐะผะธ ะธะทะฒะปะตั‡ะตะฝะธั ะบะฒะพั‚ ะธะท mysql
dict {
    quota = mysql:/usr/local/etc/dovecot/dovecot-dict-sql.conf.ext
}

#ะ˜ะทะฒะปะตั‡ัŒ ะฝะตะพะฑั…ะพะดะธะผั‹ะต ะบะพะฝั„ะธะณะธ
!include conf.d/*.conf
!include_try local.conf

dovecot-dict-sql.conf.ext

connect = host=127.0.0.1 dbname=postfix user=postfix password=password123

map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}

dovecot-sql.conf.ext

#ะŸะฐั€ะฐะผะตั‚ั€ั‹ ะฟะพะดะบะปัŽั‡ะตะฝะธั ะบ ะฑะฐะทะต MYSQL
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=password123

#ะšะฐะบะฐั ัั…ะตะผะฐ ะธัะฟะพะปัŒะทัƒะตั‚ัั ะดะปั ะฟะฐั€ะพะปะตะน
default_pass_scheme = MD5

#ะ—ะฐะฟั€ะพัั‹ ะดะปั ะฟะพะปัŒะทะพะฒะฐั‚ะตะปะตะน, ะฟะฐั€ะพะปะตะน ะธ ะบะฒะพั‚
user_query = SELECT '/var/mail/%d/%n/' AS  home, 'maildir:/var/vmail/%d/%n' AS mail, 1000 AS uid, 1000 AS gid, concat('*:bytes=',quota) as quota_rule FROM mailbox 
    WHERE username ='%u' AND active = '1'

password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 1000 as userdb_uid, 
 1000 as userdb_gid, concat('*:bytes=',quota) AS userdb_quota_rule FROM mailbox WHERE username ='%u' AND active ='1'

10-auth.conf

#ะ—ะฐะฟั€ะตั‚ะธั‚ัŒ ะฐะฒั‚ะพั€ะธะทะฐั†ะธัŽ ะฑะตะท SSL
disable_plaintext_auth = yes

#ะ˜ะผั ะ’ะฐัˆะตะณะพ ะดะพะผะตะฝะฐ
auth_realms = virusslayer.su
auth_default_realm = virusslayer.su

#ะ˜ัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะฐะฒั‚ะพั€ะธะทะฐั†ะธัŽ ะฒ ะพั‚ะบั€ั‹ั‚ะพะผ ะฒะธะดะต(ะพะฑั‹ั‡ะฝั‹ะผ ั‚ะตะบัั‚ะพะผ, ะฝะพ ะฒ ะดะฐะฝะฝะพะผ ัะปัƒั‡ะฐะธ ะฒัะต ะฑัƒะดะตั‚ะต ะฟะตั€ะตะดะฐะฒะฐั‚ัŒัั ั‡ะตั€ะตะท ssl)
auth_mechanisms = plain login

#ะะตะพะฑั…ะพะดะธะผะพ ะทะฐะบะพะผะผะตะฝั‚ะธั€ะพะฒะฐั‚ัŒ ะฒัะต ัั‚ั€ะพะบะธ, ะบั€ะพะผะต !include auth-sql.conf.ext, ั‚ะฐะบ ะบะฐะบ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปะธ ะฑัƒะดัƒั‚ ะฒะธั€ั‚ัƒะฐะปัŒะฝั‹ะต ะธะท ะฑะฐะทั‹ mysql
#!include auth-deny.conf.ext
#!include auth-master.conf.ext

#!include auth-system.conf.ext
!include auth-sql.conf.ext
#!include auth-ldap.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext

10-mail.conf

#ะŸัƒั‚ัŒ ะดะพ ะฟะพั‡ั‚ะพะฒั‹ั… ัั‰ะธะบะพะฒ
mail_location = maildir:/var/vmail/%d/%n

#ะ’ะพะทะผะพะถะตะฝ ั‚ะพะปัŒะบะพ ะพะดะธะฝ ัั‰ะธะบ ะดะปั ะฟั€ะธั‘ะผะฐ ะฟะธัะตะผ
namespace inbox {
  inbox = yes
}

#uid ะธ gid vmail
mail_uid = 1000
mail_gid = 1000

#ะกะฟะธัะพะบ ะฟะปะฐะณะธะฝะพะฒ, ะฒ ะดะฐะฝะฝะพะผ ัะปัƒั‡ะฐะธ quota
mail_plugins = quota

10-master.conf

#ะžะฟะธัะฐะฝะธะต ะฝะพะผะตั€ะพะฒ ะฟะพั€ั‚ะพะฒ ะธ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต ssl
service imap-login {
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}

service pop3-login {
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}

service submission-login {
  inet_listener submission {
    port = 587
  }
}

#ะŸะพะปัŒะทะพะฒะฐั‚ะตะปะธ ะธ ะฟั€ะฐะฒะฐ ะดะปั ะธั… ะดะพัั‚ัƒะฟะฐ ะบ ะฑะฐะทะต ะฟะพะปัŒะทะพะฒะฐั‚ะตะปะตะน ะธ ะฐะฒั‚ะพั€ะธะทะฐั†ะธะธ (ะฒะพะทะผะพะถะฝะพ ะฝะต ะบะพั€ั€ะตะบั‚ะฝะพ ะพะฟะธัะฐะป, ะฝะพ ัั‚ะธ ะฟะฐั€ะฐะผะตั‚ั€ั‹ ั ะฟะพะฝัะป ะธะผะตะฝะฝะพ ั‚ะฐะบ)
service auth {
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
    group = vmail
  }
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
}

#ะŸั€ะฐะฒะฐ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั vmail ะบ ะบะฒะพั‚ะฐะผ
service dict {
  unix_listener dict {
    mode = 0660
    user =  vmail
    group = vmail
    }
  }

10-SSL.conf

#ะ˜ัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ssl ะฟั€ะธะฝัƒะดะธั‚ะตะปัŒะฝะพ (ะฟะพะฟั‹ั‚ะบะธ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะฐะฒั‚ะพั€ะธะทะฐั†ะธัŽ ะฑะตะท sll ะฑัƒะดัƒั‚ ะทะฐะฟั€ะตั‰ะตะฝั‹)
ssl = required

#ะŸัƒั‚ะธ ะดะพ ัะตั€ั‚ะธั„ะธะบะฐั‚ะพะฒ
ssl_cert = </etc/ssl/foo-cert.pem
ssl_key = </etc/ssl/foo-key.pem
ssl_ca = </etc/ssl/demoCA/cacert.pem

#ะšะฐะบะพะน ะฝะตะพะฑั…ะพะดะธะผะพ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะฟั€ะพั‚ะพะบะพะป
ssl_min_protocol = TLSv1.2

15-lda.conf

quota_full_tempfail = no
lda_mailbox_autosubscribe = yes
protocol lda {
 # ะ’ ะดะฐะฝะฝะพะน ัั‚ั€ะพะบะต ัƒะบะฐะทะฐะฝ ะผะพะดัƒะปัŒ sieve, ะบะพั‚ะพั€ั‹ะน ะฑัƒะดะตั‚ ะฟะตั€ะตะฝะฐะฟั€ะฐะฒะปัั‚ัŒ ัะฟะฐะผ ะฒ ะฟะฐะฟะบัƒ ัะฟะฐะผ
  mail_plugins = $mail_plugins sieve quota
}

90-plugin.conf

#ะะตะพะฑั…ะพะดะธะผะพ ัƒะบะฐะทะฐั‚ัŒ ะบะฐั‚ะฐะปะพะณ ะฒ ะบะพั‚ะพั€ะพะผ ะฑัƒะดัƒั‚ ะฟั€ะฐะฒะธะปะฐ ะดะปั ะฟะตั€ะตะฝะพัะฐ ัะฟะฐะผ ะฟะธัะตะผ ะฒ ะบะฐั‚ะฐะปะพะณ "ะกะŸะะœ", ั‚ะฐะบะถะต ะฝะตะพะฑั…ะพะดะธะผะพ ะดะฐะฝะฝะพะผัƒ ะบะฐั‚ะฐะปะพะณัƒ ะฒั‹ัั‚ะฐะฒะธั‚ัŒ ะฟั€ะฐะฒะฐ chown -R vmail:vmail
#ะ’ ะดะฐะฝะฝะพะผ ะบะฐั‚ะฐะปะพะณะต ัะบะพะผะฟะธะปะธั€ัƒะตั‚ัั ั„ะฐะนะป ะดะปั ะฟะตั€ะตะฑั€ะพัะฐ ัะฟะฐะผะฐ ะฒ ะบะฐั‚ะฐะปะพะณ "ะกะŸะะœ"
plugin {
  #setting_name = value
  sieve = /usr/local/etc/dovecot/conf.d/def/default.sieve
}

auth-sql.conf.ext

#ะคะฐะนะปั‹ ั ะฝะฐัั‚ั€ะพะนะบะฐะผะธ ะดะพัั‚ัƒะฟะฐ ะบ ะฑะฐะทะต MYSQL
passdb {
  driver = sql

  # Path for SQL configuration file, see example-config/dovecot-sql.conf.ext
  args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
}

userdb {
  driver = sql
  args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
}

เจธเจชเฉˆเจฎเจพเจธเจพเจธเฉ€เจจ

เจธเจชเฉˆเจฎเจพเจธเจพเจธเฉ€เจจ โ€œเจ•เจจเจซเจฟเจ—เจฐเฉ‡เจธเจผเจจโ€ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ, เจชเจฐ เจ•เฉเจ เจฎเฉˆเจจเฉ‚เฉฐ เจฆเฉฑเจธเจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจกเฉ‡เจŸเจพ เจ•เจพเจซเจผเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ โ€œเจ•เจจเจซเจฟเจ—เจฐเฉ‡เจธเจผเจจโ€ เจกเฉ‡เจŸเจพ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เจฐเฉ‹:

local.cf

rewrite_header Subject *****SPAM*****
report_safe 0
required_score 5.0
use_bayes 1
bayes_auto_learn 1
ifplugin Mail::SpamAssassin::Plugin::Shortcircuit
endif # Mail::SpamAssassin::Plugin::Shortcircuit

เจธเจชเฉˆเจฎ เจฆเฉ‡ เจจเจพเจฒ เจ…เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจ…เฉฑเจ–เจฐเจพเจ‚ 'เจคเฉ‡ เจธเจฟเจ–เจฒเจพเจˆ เจฆเฉ‡เจฃเจพ เจตเฉ€ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ:

sa-learn --spam /path/spam/folder
sa-learn --ham /path/ham/folder

เจตเจพเจงเฉ‚

เจ‡เจธ เจญเจพเจ— เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ pf เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจซเจพเจ‡เจฐเจตเจพเจฒ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจจเจฟเจธเจผเจšเจฟเจค เจ•เจฐเจพเจ‚เจ—เจพ, pf เจจเฉ‚เฉฐ เจ†เจŸเฉ‹เจฐเจจ เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจพเจ‚เจ—เจพ เจ…เจคเฉ‡ เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจพเจ‚เจ—เจพ:

sysrc pf_enable="YES"
sysrc pf_rules="/etc/0.pf"

เจšเจฒเฉ‹ เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจฌเจฃเจพเจˆเจ:

ee /etc/0.pf

เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš เจจเจฟเจฏเจฎ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹:

#ะ”ะฐะฝะฝั‹ะน ะฟะฐั€ะฐะผะตั‚ั€(ะฝะต ั„ะธะปัŒั‚ั€ะพะฒะฐั‚ัŒ ะธะฝั‚ะตั€ั„ะตะนั lo0) ะพะฑัะทะฐั‚ะตะปัŒะฝะพ ะฝะตะพะฑั…ะพะดะธะผะพ ัƒะบะฐะทั‹ะฒะฐั‚ัŒ ะฟะตั€ะฒั‹ะผ, ะธะปะธ ะพะฝ ะฝะต ัั€ะฐะฑะพั‚ะฐะตั‚
set skip on lo0

#ะะฐัั‚ั€ะพะธะผ ะดะพัั‚ัƒะฟ ะบ ะฝะตะพะฑั…ะพะดะธะผั‹ะผ ะฟะพั€ั‚ะฐะผ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัะผ deovecot, postfix, root
pass in quick proto { tcp, udp } from any to any port {53,25,465,587,110,143,993,995} user {dovecot,postfix,root} flags S/SA modulate state
pass out quick proto { tcp, udp } from any to any port {53,25,465,587,110,143,993,995} user {dovecot,postfix,root}

#ั€ะฐะทั€ะตัˆะธั‚ัŒ ะปัŽะฑะพะน ะธัั…ะพะดัั‰ะธะน ั‚ั€ะฐั„ะธะบ ะดะปั ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั root
pass out quick proto {tcp,udp} from any to any user root

#ะ ะฐะทั€ะตัˆะธั‚ัŒ ะทะฐั…ะพะดะธั‚ัŒ ะฝะฐ ะฒัะฑ ะธะฝั‚ะตั€ั„ะตะนั
pass in quick proto tcp from any to any port 80 flags S/SA modulate state

#SSH
pass in quick proto tcp from any to any port 22 flags S/SA modulate state

#ะ ะฐะทั€ะตัˆะธั‚ัŒ ะดะพัั‚ัƒะฟ ะฒ ัะตั‚ัŒ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัะผ clamav ะธ spamd 
pass out quick proto {tcp,udp} from any to any user {clamav,spamd}

#DNS ะธ ICMP
pass out quick proto {tcp,udp} from any to any port=53 keep state
pass out quick proto icmp from any to any

block from any to any fragment
block from any to any
block all

เจคเฉเจธเฉ€เจ‚ เจ•เจฎเจพเจ‚เจก เจจเจพเจฒ pf เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹:

service pf start

เจŸเฉˆเจธเจŸเจฟเฉฐเจ—

เจธเจพเจฐเฉ‡ เจธเฉฐเจญเจพเจตเฉ€ เจ•เจจเฉˆเจ•เจธเจผเจจเจพเจ‚ (STARTTLS, SLL) เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจฎเฉ‹เจฌเจพเจˆเจฒ เจกเจฟเจตเจพเจˆเจธเจพเจ‚ เจฒเจˆ เจ•เจฒเจพเจ‡เฉฐเจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ (เจ†เจˆเจ“เจเจธ เจฒเจˆ เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš) "เจฎเจพเจˆเจ†เจซเจฟเจธ เจฎเฉ‡เจฒ" เจ‡เจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจฎเฉ‡เจฒ เจธเจฐเจตเจฐ เจจเจพเจฒ เจ•เจจเฉˆเจ•เจธเจผเจจ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฎเจพเจชเจฆเฉฐเจก เจนเจจเฅค

เจธเจชเจพเจธเจพเจธเจธเจฟเจจ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจ…เจธเฉ€เจ‚ GTUBE เจฆเจธเจคเจ–เจค เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ…เฉฑเจ–เจฐ เจตเจฟเฉฑเจš เจฒเจพเจˆเจจ เจœเฉ‹เฉœเฉ‹:

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

เจœเฉ‡ เจธเจญ เจ•เฉเจ เจธเจนเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจชเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจธเจชเฉˆเจฎ เจตเจœเฉ‹เจ‚ เจšเจฟเฉฐเจจเฉเจนเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจ‰เจธ เจ…เจจเฉเจธเจพเจฐ เจธเจชเฉˆเจฎ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจญเฉ‡เจœเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพเฅค

เจเจ‚เจŸเฉ€เจตเจพเจ‡เจฐเจธ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจŸเฉˆเจ•เจธเจŸ เจซเจพเจˆเจฒ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจชเฉฑเจคเจฐ เจญเฉ‡เจœเจฃ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ, เจ‡เจธ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš EICAR เจ•เฉเจฐเจฎ เจธเจผเจพเจฎเจฒ เจนเฉ‹เจตเฉ‡เจ—เจพ:

X5O!P%@AP[4PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

เจšเจฟเฉฑเจ เฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ•เฉเจฆเจฐเจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเจพเจนเจฐเฉ€ เจฎเฉ‡เจฒเจฌเจพเจ•เจธเจพเจ‚ เจคเฉ‹เจ‚ เจญเฉ‡เจœเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค
เจฐเฉ€เจ…เจฒ เจŸเจพเจˆเจฎ เจตเจฟเฉฑเจš เจฒเฉŒเจ— เจฆเฉ‡เจ–เจฃ เจฒเจˆ, เจšเจฒเจพเจ“:

tail -f /var/log/maillog

เจจเจพเจฒ เจนเฉ€, เจฌเจพเจนเจฐเฉ€ เจฎเฉ‡เจฒเจฌเจพเจ•เจธเจพเจ‚ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, yandex.ru, mail.ru, gmail.com, เจ†เจฆเจฟ) เจจเฉ‚เฉฐ เจฎเฉ‡เจฒ เจญเฉ‡เจœเจฃ เจฆเฉ€ เจธเจนเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ‰เจฒเจŸเจพ DNS เจœเจผเฉ‹เจจ (PTR เจฐเจฟเจ•เจพเจฐเจก) เจฐเจœเจฟเจธเจŸเจฐ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจ‡เจน เจธเฉฐเจชเจฐเจ• เจ•เจฐเจ•เฉ‡ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจคเฉเจนเจพเจกเจพ เจชเฉเจฐเจฆเจพเจคเจพ (เจœเฉ‡เจ•เจฐ, เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ†เจชเจฃเจพ DNS เจธเจฐเจตเจฐ เจจเจนเฉ€เจ‚ เจนเฉˆ)เฅค

เจธเจฟเฉฑเจŸเจพ

เจ‡เจน, เจฌเฉ‡เจธเจผเฉฑเจ•, เจœเจพเจชเจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เฉฑเจ• เจฎเฉ‡เจฒ เจธเจฐเจตเจฐ เจ‡เฉฑเจ• เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจšเฉ€เจœเจผ เจนเฉˆ, เจชเจฐ เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เจน เจฌเจฟเจฒเจ•เฉเจฒ เจธเจนเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจธเฉฐเจฐเจšเจจเจพ 'เจคเฉ‡ เจฅเฉ‹เฉœเฉเจนเจพ เจธเจฎเจพเจ‚ เจฌเจฟเจคเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ•เจพเจซเจผเฉ€ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒ เจฎเฉ‡เจฒ เจธเจฐเจตเจฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹; เจธเจชเฉˆเจฎ เจ…เจคเฉ‡ เจตเจพเจ‡เจฐเจธ เจฆเฉ‡ เจ–เจฟเจฒเจพเจซ เจธเฉเจฐเฉฑเจ–เจฟเจ†.

PS เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจฆเฉ‡ เจจเจพเจฒ "เจ•เจพเจชเฉ€-เจชเฉ‡เจธเจŸ" เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจœเจจเจพ เจฌเจฃเจพ เจฐเจนเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฐเฉ‚เจธเฉ€ เจ•เจฒเจพเจธ เจฒเฉŒเจ—เจธ เจตเจฟเฉฑเจš เจฐเฉ‚เจŸ เจ‰เจชเจญเฉ‹เจ—เจคเจพ (เจ…เจคเฉ‡ เจœเจฟเจจเฉเจนเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจธเจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ) เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

pw usermod root -L russian

เจ‡เจนเจจเจพเจ‚ เจ•เจฆเจฎเจพเจ‚ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจฐเฉ‚เจธเฉ€ เจ…เฉฑเจ–เจฐ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เฉ€เจคเฉ‡ เจœเจพเจฃเจ—เฉ‡.

เจธเจฐเฉ‹เจค: www.habr.com

DDoS เจธเฉเจฐเฉฑเจ–เจฟเจ†, VPS VDS เจธเจฐเจตเจฐเจพเจ‚ เจตเจพเจฒเฉ€เจ†เจ‚ เจธเจพเจˆเจŸเจพเจ‚ เจฒเจˆ เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ— เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจ–เจฐเฉ€เจฆเฉ‹ ๐Ÿ”ฅ DDoS เจธเฉเจฐเฉฑเจ–เจฟเจ†, VPS VDS เจธเจฐเจตเจฐเจพเจ‚ เจจเจพเจฒ เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ— เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจ–เจฐเฉ€เจฆเฉ‹ | ProHoster