ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠΎΡΡΠΎΠ²ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ Ρ
ΠΎΡΠ΅Π» ΠΈΠ·ΡΡΠΈΡΡ ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ, Π½ΠΎ ΡΡΠΊΠΈ Π΄ΠΎΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΉΡΠ°Ρ, Π΄Π° ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ Π½Π΅ ΠΎΡΠΎΠ±ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄Π°Π²Π°Π»ΠΎΡΡ Π½Π°ΠΉΡΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅ΡΠΈΠ» Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ. Π Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠΉΠ΄ΡΡ ΡΠ΅ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎ postfix, dovecot, mysql, postfixadmin, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈ ΠΎ spamassassin, clamav-milter(ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ clamav Π΄Π»Ρ ΠΏΠΎΡΡΠΎΠ²ΡΡ
ΡΠ΅ΡΠ²Π΅ΡΠΎΠ²), postgrey, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΡΠΏΠ°ΠΌΠ° Π² ΠΏΠ°ΠΏΠΊΡ Β«Π‘ΠΏΠ°ΠΌΒ»(dovecot-pigeonhole).
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ°
ΠΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ (postfix, dovecot ΠΈ dovecot-pigeonhole Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ· ΠΏΠΎΡΡΠΎΠ², dovecot-sieve ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², Π½ΠΎ Π² ΠΏΠΎΡΡΠ°Ρ Π²Π΅ΡΡΠΈΠΈ Π±ΡΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡΠ΅ ΠΈ ΠΏΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ dovecot Ρ dovecot-sieve). Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ:
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
ΠΠ΅ Π·Π°Π±ΡΠ²Π°Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² httpd.conf ΡΡΡΠΎΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ php Π² apache ΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ postfixadmin:
<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"
ΠΠ°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΈ ΡΠΊΠ°ΡΠ°ΡΡ postfixadmin
cd /usr/local/www/apache24/data
Π‘ΠΊΠ°ΡΠ°Π΅ΠΌ postfixadmin (Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π°ΠΊΡΡΠ°Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ Π±ΡΠ»Π° 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
ΠΠ°Π»Π΅Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ postfixadmin, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡ mysql-secure-installation(ΡΠΎΡ ΠΏΠ°ΡΠΎΠ»Ρ ΠΊΠΎΡΠΎΡΡΠΉ ΠΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠΊΡΠΈΠΏΡΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ Π² mysql ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ alter user), Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ 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/, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ ΠΈ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΈΡ ΠΊ Π²ΠΈΠ΄Ρ, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ apache, ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ templates_c Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ /usr/local/www/apache24/data/postfixadmin-3.2 ΠΈ Π½Π°Π·Π½Π°ΡΠΈΡΡ Π½Π° Π½Π΅Π³ΠΎ Π²Π»Π°Π΄Π΅Π»ΡΡΠ° 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
ΠΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ° Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΠΎΡΠ΅Π½ΠΎ ΠΈΠΌΡ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°, Π½Π΅ ΡΠ΅Π³ΠΎ Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΡΠ΅, Π½Π°ΠΆΠΌΠΈΡΠ΅ Enter, Π΄Π°Π»Π΅Π΅ ΡΠΊΡΠΈΠΏΡ Π·Π°ΠΏΡΠΎΡΠΈΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°, Π΄Π°Π»Π΅Π΅ Π±ΡΠ΄ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°.
ΠΠ°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ(Π±Π΅Π· ΠΏΠ°ΡΠΎΠ»Ρ) ΠΈ Π½Π΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°(Organizational Unit Name (eg, section) [] Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠΊΠ°Π·Π°Π½ Π² ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌ Π²ΡΡΠ΅):
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
Π‘ΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ ΠΎΡΡΠ°Π²ΡΡΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠΈΡΠ΅ ΠΈΡ Π² ΡΠΎΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΊΠΎΡΠΎΡΡΠΉ ΠΠ°ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π΅Π½, Β«ΠΊΠΎΠ½ΡΠΈΠ³ΠΈΒ» postfix ΠΈ dovecote Π±ΡΠ΄ΡΡ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ Ρ ΡΡΡΡΠΎΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ Π±ΡΠ΄ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅.
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ vmail
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ postfix, dovecot ΠΈ dovecot-pigeonhole, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π³ΡΡΠΏΠΏΡ(Π³ΡΡΠΏΠΏΠ° ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ) 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
ΠΠΎΡΠ»Π΅ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΡΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ dovecot, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΠΏΠΎΡΡΠ° (Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ mysql) ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ±ΠΎΡΠΊΡ(BATCH=yes ΡΠΊΠ°ΠΆΠ΅Ρ make Π½Π΅ Π·Π°Π΄Π°Π²Π°ΡΡ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅):
cd /usr/ports/mail/dovecot
make config
make BATCH=yes install clean
Π’Π΅ ΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΎΠ΄Π΅Π»Π°ΡΡ Ρ postfix ΠΈ dovecot-pigeonhole
dovecot-pigeonhole:
cd /usr/ports/mail/dovecot-pigeonhole
make BATCH=yes install clean
postfix: ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΡΡΠ΅ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΏΠΎΡΡΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ mysql
cd /usr/ports/mail/postfix-sasl
make config
make BATCH=yes install clean
ΠΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ dovecot ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ Β«ΠΊΠΎΠ½ΡΠΈΠ³ΠΈΒ»:
cp -R /usr/local/etc/dovecot/example-config/* /usr/local/etc/dovecot
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ postfix ΠΈ 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";
}
Β«ΠΠΎΠ½ΡΠΈΠ³ΠΈΒ»
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΏΡΠΈΠ²Π΅Π΄Ρ ΠΏΡΠΈΠΌΠ΅ΡΡ Β«ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠ²Β» Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ Π² Π½ΠΈΡ , ΡΠΎΠΌΠ½Π΅Π²Π°ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Β«ΠΊΠΎΠ½ΡΠΈΠ³Π΅Β» spamassassin, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ Π² ΡΠ΅ΡΠΈ Π½Π΅ Π½Π°ΡΡΠ»(ΠΎΡΡΠ°Π²ΠΈΠ» Β«ΠΊΠΎΠ½ΡΠΈΠ³Β» ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ), ΠΏΡΠΎΡΡΠ±Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΊΠ°ΠΊ Π»ΡΡΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ spamassassin.
Postfix
ΠΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ Π²ΡΡΠ°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Π΄ΠΎΠΌΠ΅Π½ΠΎΠ², ΠΊΠ²ΠΎΡ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ:
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
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
}
Spamassassin
Β«ΠΠΎΠ½ΡΠΈΠ³Β» spamassassin ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΠΊΠΎΠΉ Π²ΠΈΠ΄, Π½ΠΎ ΡΡΠΎ ΡΠΎ ΠΌΠ½Π΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΡ Π½Π°ΡΡΡΠΎΠ΅ Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΠΏΡΠΎΡΡΠ±Π° ΠΏΠΎΠΌΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΡ Β«ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠΌΒ»:
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
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΡΠΊΠ°ΠΆΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ firewall Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ 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) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄Π»Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²(Π² ΠΌΠΎΡΠΌ ΡΠ»ΡΡΠ°ΠΈ Π΄Π»Ρ ios) Β«ΠΠΎΠΉΠΡΠΈΡ ΠΠΎΡΡΠ°Β», Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΊ ΠΏΠΎΡΡΠΎΠ²ΠΎΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ.
ΠΠ»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ spaassasin ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΈΠ³Π½Π°ΡΡΡΡ 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 ΡΠ΅ΡΠ²Π΅Ρ).
ΠΡΠ²ΠΎΠ΄
ΠΠΎΠΆΠ΅Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½Π°Ρ Π²Π΅ΡΡ, Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ ΡΠΎ ΡΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΡΠ°ΠΊ, ΠΏΠΎΡΡΠ°ΡΠΈΠ² Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ, Ρ Π·Π°ΡΠΈΡΠΎΠΉ ΠΎΡ ΡΠΏΠ°ΠΌΠ° ΠΈ Π²ΠΈΡΡΡΠΎΠ².
P.S. ΠΡΠ»ΠΈ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ Β«ΠΊΠΎΠΏΠΈΠΏΠ°ΡΡΠΈΡΡΒ» Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ, ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ root(ΠΈ ΡΠ΅ΠΌ ΠΊΠΎΠΌΡ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ) Π² Π»ΠΎΠ³ΠΈ ΠΊΠ»Π°ΡΡ russian:
pw usermod root -L russian
ΠΠΎΡΠ»Π΅ ΡΡΠΈΡ
Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΡΡΡΡΠΊΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π±ΡΠ΄ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com