ΠΠ°Π½Π½Π°Ρ ΡΡΠ°ΡΡΡ ΠΎ ΡΠΎΠΌ ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ.
Postfix + Dovecot. SPF + DKIM + rDNS. Π‘ IPv6.
Π‘ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ TSL. Π‘ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² β ΡΠ°ΡΡΡ Ρ Π½Π°ΡΡΠΎΡΡΠΈΠΌ SSL ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠΌ.
Π‘ Π°Π½ΡΠΈΡΠΏΠ°ΠΌ-Π·Π°ΡΠΈΡΠΎΠΉ ΠΈ Π²ΡΡΠΎΠΊΠΈΠΌ Π°Π½ΡΠΈΡΠΏΠ°ΠΌ-ΡΠ΅ΠΉΡΠΈΠ½Π³ΠΎΠΌ Ρ Π΄ΡΡΠ³ΠΈΡ
ΠΏΠΎΡΡΠΎΠ²ΡΡ
ΡΠ΅ΡΠ²Π΅ΡΠΎΠ².
Π‘ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ².
Π‘ OpenVPN, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠ΅ΡΠ΅Π· IPv4, ΠΈ ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄Π°ΡΡ IPv6.
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠ·ΡΡΠ°ΡΡ ΡΡΠΈ Π²ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½ΠΎ Ρ ΠΎΡΠΈΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠ΅ΡΠ²Π΅Ρ β ΡΠΎΠ³Π΄Π° ΡΡΠ° ΡΡΠ°ΡΡΡ Π΄Π»Ρ Π²Π°Ρ.
Π ΡΡΠ°ΡΡΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ ΠΏΠΎΠΏΡΡΠΊΠΈ ΠΏΠΎΡΡΠ½ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π΄Π΅ΡΠ°Π»Ρ. ΠΠΎΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ΄ΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ Π½Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎ ΠΈΠ»ΠΈ Π²Π°ΠΆΠ½ΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ.
ΠΠΎΡΠΈΠ²Π°ΡΠΈΡ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ β ΠΌΠΎΡ Π΄Π°Π²Π½ΡΡ ΠΌΠ΅ΡΡΠ°. ΠΠΎΠΆΠ΅Ρ ΡΡΠΎ Π·Π²ΡΡΠΈΡ Π³Π»ΡΠΏΠΎ, Π½ΠΎ ΠΠΠ₯Π, ΡΡΠΎ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ ΠΌΠ΅ΡΡΠ°ΡΡ ΠΎ Π½ΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Π»ΡΠ±ΠΈΠΌΠΎΠΉ ΠΌΠ°ΡΠΊΠΈ.
ΠΠΎΡΠΈΠ²Π°ΡΠΈΡ Π½Π°ΡΡΡΠΎΠΈΡΡ IPv6 β Π΄Π²Π΅. ΠΠ’ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΡΡΠ°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΠΆΠΈΡΡ. Π₯ΠΎΡΠ΅ΡΡΡ Π²Π½Π΅ΡΡΠΈ ΡΠ²ΠΎΠΉ ΡΠΊΡΠΎΠΌΠ½ΡΠΉ Π²ΠΊΠ»Π°Π΄ Π² Π±ΠΎΡΡΠ±Ρ Ρ ΡΠ΅Π½Π·ΡΡΠΎΠΉ.
ΠΠΎΡΠΈΠ²Π°ΡΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ OpenVPN β ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ IPv6 ΡΠ°Π±ΠΎΡΠ°Π» Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅.
ΠΠΎΡΠΈΠ²Π°ΡΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² β Ρ ΠΌΠ΅Π½Ρ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Β«ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ, Π½ΠΎ Π±Π΅Π·Π»ΠΈΠΌΠΈΡΠ½ΡΠΉΒ», Π° Π΄ΡΡΠ³ΠΎΠΉ Β«Π±ΡΡΡΡΡΠΉ, Π½ΠΎ Ρ ΡΠ°ΡΠΈΡΠΎΠΌΒ».
ΠΠΎΡΠΈΠ²Π°ΡΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Bind β ΠΌΠΎΠΉ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΉ DNS ΡΠ΅ΡΠ²Π΅Ρ, Π° google Π±ΡΠ²Π°Π΅Ρ ΡΠΎΠΆΠ΅ Π΄Π°ΡΡ ΡΠ±ΠΎΠΈ. Π₯ΠΎΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΉ DNS ΡΠ΅ΡΠ²Π΅Ρ Π΄Π»Ρ Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΎΡΠΈΠ²Π°ΡΠΈΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ°ΡΡΡ β ΡΠ΅ΡΠ½ΠΎΠ²ΠΈΠΊ Π±ΡΠ» Π½Π°ΠΏΠΈΡΠ°Π» 10 ΠΌΠ΅ΡΡΡΠ΅Π² Π½Π°Π·Π°Π΄, ΠΈ Ρ Π² Π½Π΅Π³ΠΎ ΡΠΆΠ΅ Π΄Π²Π° ΡΠ°Π·Π° Π·Π°Π³Π»ΡΠ΄ΡΠ²Π°Π». ΠΡΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π°Π²ΡΠΎΡΡ ΡΡΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ Π½Π°Π΄ΠΎ β ΡΠΎ Π±ΠΎΠ»ΡΡΠ°Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ, ΡΡΠΎ ΠΈ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ.
Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° Π½Π΅Ρ. ΠΠΎ Ρ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΈΠΏΠ° Β«ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ Π²ΠΎΡ ΡΠ°ΠΊ ΠΈ ΠΏΠΎΡΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π²ΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ β Π²ΡΠΊΠΈΠ½ΡΡΠ΅ Π»ΠΈΡΠ½Π΅Π΅Β».
ΠΠΌΠ΅Π΅ΡΡΡ ΡΠ΅ΡΠ²Π΅Ρ Colocation Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ tech.ru. ΠΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠ°Π²Π½ΠΈΡΡ Ρ OVH, Hetzner, AWS. ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΡΠ΄Π½ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ tech.ru.
ΠΠ° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Debian 9.
ΠΠ° ΡΠ΅ΡΠ²Π΅ΡΠ΅ 2 ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° `eno1` ΠΈ `eno2`. ΠΠ΅ΡΠ²ΡΠΉ Π±Π΅Π·Π»ΠΈΠΌΠΈΡΠ½ΡΠΉ, Π° Π²ΡΠΎΡΠΎΠΉ Π±ΡΡΡΡΡΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΠΌΠ΅Π΅ΡΡΡ 3 ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ IP Π°Π΄ΡΠ΅ΡΠ°, XX.XX.XX.X0 ΠΈ XX.XX.XX.X1 ΠΈ XX.XX.XX.X2 Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ `eno1` ΠΈ XX.XX.XX.X5 Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ `eno2`.
ΠΠΌΠ΅Π΅ΡΡΡ XXXX:XXXX:XXXX:XXXX::/64 ΠΏΡΠ» IPv6 Π°Π΄ΡΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ `eno1` ΠΈ ΠΈΠ· Π½Π΅Π³ΠΎ XXXX:XXXX:XXXX:XXXX:1:2::/96 ΠΏΠΎ ΠΌΠΎΠ΅ΠΉ ΠΏΡΠΎΡΡΠ±Π΅ Π½Π°Π·Π½Π°ΡΠΈΠ»ΠΈ Π½Π° `eno2`.
ΠΠΌΠ΅Π΅ΡΡΡ 3 Π΄ΠΎΠΌΠ΅Π½Π° `domain1.com`, `domain2.com`, `domain3.com`. ΠΠ»Ρ `domain1.com` ΠΈ `domain3.com` Π΅ΡΡΡ SSL ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ.
ΠΠΌΠ΅Π΅ΡΡΡ google Π°ΠΊΠΊΠ°ΡΠ½Ρ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Ρ
ΠΎΡΠ΅ΡΡΡ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΡΠΈΠΊ `[email protected]` (ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΡ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΠΏΠΎΡΡΡ ΠΏΡΡΠΌΠΎ ΠΈΠ· gmail ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°).
ΠΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΡΠΈΠΊ `[email protected]`, ΠΊΠΎΠΏΠΈΡ ΠΏΠΎΡΡΡ Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Ρ Ρ
ΠΎΡΡ Π²ΠΈΠ΄Π΅ΡΡ Ρ ΡΠ΅Π±Ρ Π² gmail. Π Π² ΡΠ΅Π΄ΠΊΠΎ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ΅Π³ΠΎ-ΡΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ `[email protected]` ΡΠ΅ΡΠ΅Π· web-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
ΠΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΡΠΈΠΊ `[email protected]`, ΠΊΠΎΡΠΎΡΡΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΠ²Π°Π½ΠΎΠ² ΡΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ iPhone.
ΠΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΏΠΈΡΡΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ΠΌ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΠΊ Π°Π½ΡΠΈΡΠΏΠ°ΠΌΡ.
ΠΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π°ΠΈΠ²ΡΡΡΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠΉ Π² ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ
ΡΠ΅ΡΡΡ
.
ΠΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° IPv6 ΠΈ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΈΡΠ΅ΠΌ.
ΠΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ SpamAssassin, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»ΡΡΡ ΠΏΠΈΡΡΠΌΠ°. Π Π±ΡΠ΄Π΅Ρ ΠΈΠ»ΠΈ bounce Π΄Π΅Π»Π°ΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΈΠ»ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π² IMAP ΠΏΠ°ΠΏΠΊΡ Β«Π‘ΠΏΠ°ΠΌΒ».
ΠΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ Π°Π²ΡΠΎ-ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ SpamAssassin: Π΅ΡΠ»ΠΈ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Ρ ΠΏΠΈΡΡΠΌΠΎ Π² ΠΏΠ°ΠΏΠΊΡ Β«Π‘ΠΏΠ°ΠΌΒ» β ΠΎΠ±ΡΡΠΈΡΡΡ Π½Π° ΡΡΠΎΠΌ; Π΅ΡΠ»ΠΈ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Ρ ΠΏΠΈΡΡΠΌΠΎ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ Β«Π‘ΠΏΠ°ΠΌΒ» β ΠΎΠ±ΡΡΠΈΡΡΡ Π½Π° ΡΡΠΎΠΌ. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ SpamAssassin β Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Π»ΠΈΡΡΡ Π½Π° ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌΠΎΡΡΡ ΠΏΠΈΡΡΠΌΠ° Π² ΠΏΠ°ΠΏΠΊΡ Β«Π‘ΠΏΠ°ΠΌΒ».
Π‘ΠΊΡΠΈΠΏΡΡ php Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΌΠ΅ΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΡΡΡ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅.
ΠΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ openvpn ΡΠ΅ΡΠ²ΠΈΡ, Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ IPv6 Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π΅Ρ IPv6.
Π‘Π½Π°ΡΠ°Π»Π° Π½Π°Π΄ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ IPv6.
ΠΠΎΡΠΎΠΌ Π½Π°Π΄ΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ OpenVPN, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ ΠΏΠΎ IPv4 ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ-ΡΠ΅Π°Π»ΡΠ½ΡΠΉ IPv6 Π°Π΄ΡΠ΅Ρ. Π£ ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ IPv6 ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ Π»ΡΠ±ΡΠΌ ΡΠ΅ΡΡΡΡΠ°ΠΌ IPv6 Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅.
ΠΠΎΡΠΎΠΌ Π½Π°Π΄ΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ Postfix Π½Π° ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΠΏΠΈΡΠ΅ΠΌ + SPF + DKIM + rDNS ΠΈ ΠΏΡΠΎΡΠΈΠ΅ ΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΌΠ΅Π»ΠΎΡΠΈ.
ΠΠΎΡΠΎΠΌ Π½Π°Π΄ΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ Dovecot ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ Multidomain.
ΠΠΎΡΠΎΠΌ Π½Π°Π΄ΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ SpamAssassin ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅.
Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Bind.
============= Multi-interfaces =============
ΠΠ»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π½Π°Π΄ΠΎ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠ΅ Π² «/etc/network/interfaces».
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eno1
iface eno1 inet static
address XX.XX.XX.X0/24
gateway XX.XX.XX.1
dns-nameservers 127.0.0.1 213.248.1.6
post-up ip route add XX.XX.XX.0/24 dev eno1 src XX.XX.XX.X0 table eno1t
post-up ip route add default via XX.XX.XX.1 table eno1t
post-up ip rule add table eno1t from XX.XX.XX.X0
post-up ip rule add table eno1t to XX.XX.XX.X0
auto eno1:1
iface eno1:1 inet static
address XX.XX.XX.X1
netmask 255.255.255.0
post-up ip rule add table eno1t from XX.XX.XX.X1
post-up ip rule add table eno1t to XX.XX.XX.X1
post-up ip route add 10.8.0.0/24 dev tun0 src XX.XX.XX.X1 table eno1t
post-down ip route del 10.8.0.0/24 dev tun0 src XX.XX.XX.X1 table eno1t
auto eno1:2
iface eno1:2 inet static
address XX.XX.XX.X2
netmask 255.255.255.0
post-up ip rule add table eno1t from XX.XX.XX.X2
post-up ip rule add table eno1t to XX.XX.XX.X2
iface eno1 inet6 static
address XXXX:XXXX:XXXX:XXXX:1:1::/64
gateway XXXX:XXXX:XXXX:XXXX::1
up ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:1:1:1/64 dev $IFACE
up ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:1:1:2/64 dev $IFACE
down ip -6 addr del XXXX:XXXX:XXXX:XXXX:1:1:1:1/64 dev $IFACE
down ip -6 addr del XXXX:XXXX:XXXX:XXXX:1:1:1:2/64 dev $IFACE
# The secondary network interface
allow-hotplug eno2
iface eno2 inet static
address XX.XX.XX.X5
netmask 255.255.255.0
post-up ip route add XX.XX.XX.0/24 dev eno2 src XX.XX.XX.X5 table eno2t
post-up ip route add default via XX.XX.XX.1 table eno2t
post-up ip rule add table eno2t from XX.XX.XX.X5
post-up ip rule add table eno2t to XX.XX.XX.X5
post-up ip route add 10.8.0.0/24 dev tun0 src XX.XX.XX.X5 table eno2t
post-down ip route del 10.8.0.0/24 dev tun0 src XX.XX.XX.X5 table eno2t
iface eno2 inet6 static
address XXXX:XXXX:XXXX:XXXX:1:2::/96
up ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:2:1:1/64 dev $IFACE
up ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:2:1:2/64 dev $IFACE
down ip -6 addr del XXXX:XXXX:XXXX:XXXX:1:2:1:1/64 dev $IFACE
down ip -6 addr del XXXX:XXXX:XXXX:XXXX:1:2:1:2/64 dev $IFACE
# OpenVPN network
iface tun0 inet6 static
address XXXX:XXXX:XXXX:XXXX:1:3::/80
ΠΠ°Π½Π½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π½Π° Π»ΡΠ±ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π² tech.ru (Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ) ΠΈ ΠΎΠ½ΠΎ ΡΡΠ°Π·Ρ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ.
ΠΡΠ»ΠΈ ΠΎΠΏΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ Π²Π΅ΡΠ΅ΠΉ Π΄Π»Ρ Hetzner, OVH β ΡΠ°ΠΌ ΠΏΠΎΠ΄ΡΡΠ³ΠΎΠΌΡ. Π‘Π»ΠΎΠΆΠ½Π΅Π΅.
eno1 β ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΊΠ°ΡΡΡ #1 (ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ, Π½ΠΎ Π±Π΅Π·Π»ΠΈΠΌΠΈΡΠ½ΡΠΉ).
eno2 β ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΊΠ°ΡΡΡ #2 (Π±ΡΡΡΡΡΠΉ, Π½ΠΎ Ρ ΡΠ°ΡΠΈΡΠΎΠΌ).
tun0 β ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΊΠ°ΡΡΡ ΠΎΡ OpenVPN.
XX.XX.XX.X0 β IPv4 #1 Π½Π° eno1.
XX.XX.XX.X1 β IPv4 #2 Π½Π° eno1.
XX.XX.XX.X2 β IPv4 #3 Π½Π° eno1.
XX.XX.XX.X5 β IPv4 #1 Π½Π° eno2.
XX.XX.XX.1 β IPv4 gateway.
XXXX:XXXX:XXXX:XXXX::/64 β IPv6 Π½Π° Π²Π΅ΡΡ ΡΠ΅ΡΠ²Π΅Ρ.
XXXX:XXXX:XXXX:XXXX:1:2::/96 β IPv6 Π΄Π»Ρ eno2, Π²ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·Π²Π½Π΅ Π·Π°Ρ
ΠΎΠ΄ΠΈΡ Π² eno1.
XXXX:XXXX:XXXX:XXXX::1 β IPv6 gateway (ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ/Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ΄ΡΡΠ³ΠΎΠΌΡ. Π£ΠΊΠ°Π·Π°ΡΡ IPv6 ΡΠ²ΠΈΡΠ°).
dns-nameservers β ΡΠΊΠ°Π·Π°Π½Ρ 127.0.0.1 (ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ bind Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ) ΠΈ 213.248.1.6 (ΡΡΠΎ ΠΎΡ tech.ru ).
Β«table eno1tΒ» ΠΈ Β«table eno2tΒ» β cΠΌΡΡΠ» ΡΡΠΈΡ route-rule Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΡΠ°ΡΠΈΠΊ Π²ΠΎΡΠ΅Π΄ΡΠΈΠΉ ΡΠ΅ΡΠ΅Π· eno1 -> ΡΡΡΠ» Π±Ρ ΡΠ΅ΡΠ΅Π· Π½Π΅Π³ΠΎ ΠΆΠ΅, Π° ΡΡΠ°ΡΠΈΠΊ Π²ΠΎΡΠ΅Π΄ΡΠΈΠΉ ΡΠ΅ΡΠ΅Π· eno2 -> ΡΡΡΠ» Π±Ρ ΡΠ΅ΡΠ΅Π· Π½Π΅Π³ΠΎ ΠΆΠ΅. Π ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΠΎ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΡ ΠΎΠ΄ΠΈΠ»ΠΈ Π±Ρ ΡΠ΅ΡΠ΅Π· eno1.
ip route add default via XX.XX.XX.1 table eno1t
ΠΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΌΡ Π·Π°Π΄Π°ΡΠΌ, ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΡΡΠ°ΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΏΠ°Π» ΠΏΠΎΠ΄ Π»ΡΠ±ΠΎΠ΅ rule Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΡΠΌΠ΅ΡΠ΅Π½ΠΎ Β«table eno1tΒ» -> Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ eno1.
ip route add XX.XX.XX.0/24 dev eno1 src XX.XX.XX.X0 table eno1t
ΠΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΌΡ Π·Π°Π΄Π°ΡΠΌ, ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ ΡΡΠ°ΡΠΈΠΊ ΠΏΠΎ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ eno1.
ip rule add table eno1t from XX.XX.XX.X0
ip rule add table eno1t to XX.XX.XX.X0
ΠΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΌΡ Π·Π°Π΄Π°ΡΠΌ ΡΠ°ΠΌΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ°ΡΠΈΠΊΠ°.
auto eno1:2
iface eno1:2 inet static
address XX.XX.XX.X2
netmask 255.255.255.0
post-up ip rule add table eno1t from XX.XX.XX.X2
post-up ip rule add table eno1t to XX.XX.XX.X2
ΠΡΠΎΡ Π±Π»ΠΎΠΊ Π·Π°Π΄Π°ΡΡ Π²ΡΠΎΡΠΎΠΉ IPv4 Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° eno1.
ip route add 10.8.0.0/24 dev tun0 src XX.XX.XX.X1 table eno1t
ΠΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΌΡ Π·Π°Π΄Π°ΡΠΌ route ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² OpenVPN Π΄ΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
IPv4 ΠΊΡΠΎΠΌΠ΅ XX.XX.XX.X0.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ Π²ΡΠ΅Ρ
IPv4 β Ρ Π΄ΠΎ ΡΠΈΡ
ΠΏΠΎΡ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ.
iface eno1 inet6 static
address XXXX:XXXX:XXXX:XXXX:1:1::/64
gateway XXXX:XXXX:XXXX:XXXX::1
ΠΡΠΎ ΠΌΡ Π·Π°Π΄Π°ΡΠΌ Π°Π΄ΡΠ΅Ρ Π΄Π»Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. Π‘Π΅ΡΠ²Π΅Ρ Π΅Π³ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Β«ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠΉΒ» Π°Π΄ΡΠ΅Ρ. ΠΠΎΠ»ΡΡΠ΅ Π½ΠΈΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ.
ΠΠΎΡΠ΅ΠΌΡ ΡΠΊΠ°Π·Π°Π½ΠΎ «:1:1::» ΡΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎ? Π§ΡΠΎΠ±Ρ OpenVPN ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ. ΠΠ± ΡΡΠΎΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠ° ΡΠ΅ΠΌΡ gateway β ΡΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ Π»Π°Π΄Π½ΠΎ. ΠΠΎ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌΡ β ΡΡΠ΄Π° Π½Π°Π΄ΠΎ ΡΠΊΠ°Π·Π°ΡΡ IPv6 ΡΠ²ΠΈΡΠ° ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΠΎΠ΄ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ½ ΡΠ΅ΡΠ²Π΅Ρ.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ IPv6 ΠΏΠ΅ΡΠ΅ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π΅ΡΠ»ΠΈ Ρ ΡΠ°ΠΊ Π΄Π΅Π»Π°Ρ. ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅ ΡΡΠΎ Π·Π°ΠΌΠΎΡΠΎΡΠΊΠΈ tech.ru ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ.
ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:1:1:1/64 dev $IFACE
ΠΡΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ IPv6 Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΡΠ»ΠΈ Π½Π°Π΄ΠΎ ΡΠΎΡΠ½Ρ Π°Π΄ΡΠ΅ΡΠΎΠ² β Π·Π½Π°ΡΠΈΡ ΡΠΎΡΠ½Ρ ΡΡΡΠΎΠΊ Π² ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅.
iface eno1 inet6 static
address XXXX:XXXX:XXXX:XXXX:1:1::/64
...
iface eno2 inet6 static
address XXXX:XXXX:XXXX:XXXX:1:2::/96
...
iface tun0 inet6 static
address XXXX:XXXX:XXXX:XXXX:1:3::/80
ΠΡΠΌΠ΅ΡΠΈΠ» Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ Π²ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ.
eno1 β ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ «/64» β ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ Π²Π΅ΡΡ Π½Π°Ρ pool Π°Π΄ΡΠ΅ΡΠΎΠ².
tun0 β ΠΏΠΎΠ΄ΡΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ eno1. ΠΠ½Π°ΡΠ΅ Π½Π΅Π»ΡΠ·Ρ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ IPv6 gateway Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² OpenVPN.
eno2 β ΠΏΠΎΠ΄ΡΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ tun0. ΠΠ½Π°ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ OpenVPN Π½Π΅ ΡΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΏΠ°ΡΡΡ Π½Π° IPv6 Π°Π΄ΡΠ΅ΡΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅.
ΠΠ»Ρ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΠΈ Ρ Π²ΡΠ±ΡΠ°Π» ΡΠ°Π³ ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ 16, Π½ΠΎ ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ Β«1Β» ΡΠ°Π³ Π΄Π΅Π»Π°ΡΡ.
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ 64+16 = 80, Π° 80+16 = 96.ΠΠ»Ρ Π΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΠΈ:
XXXX:XXXX:XXXX:XXXX:1:1:YYYY:YYYY β ΡΡΠΎ Π°Π΄ΡΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠ°ΠΉΡΠ°ΠΌ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ eno1.
XXXX:XXXX:XXXX:XXXX:1:2:YYYY:YYYY β ΡΡΠΎ Π°Π΄ΡΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠ°ΠΉΡΠ°ΠΌ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ eno2.
XXXX:XXXX:XXXX:XXXX:1:3:YYYY:YYYY β ΡΡΠΎ Π°Π΄ΡΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ OpenVPN ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ Π°Π΄ΡΠ΅ΡΠ° OpenVPN.
ΠΠ»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅ΡΠΈ β Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ΅ΡΠ²Π΅Ρ.
IPv4 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ΄Ρ
Π²Π°ΡΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ (ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΠ½ΡΡΡ Π² screen β ΠΈΠ½Π°ΡΠ΅ ΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠΎΡΡΠΎ ΡΡΠΎΠ½ΠΈΡ ΡΠ΅ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅):
/etc/init.d/networking restart
Π ΡΠ°ΠΉΠ» «/etc/iproute2/rt_tables» Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΊΠΎΠ½Π΅Ρ:
100 eno1t
101 eno2t
ΠΠ΅Π· ΡΡΠΎΠ³ΠΎ Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΠ΅ table Π² ΡΠ°ΠΉΠ»Π΅ «/etc/network/interfaces».
Π¦ΠΈΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΠΌΠ΅Π½Π΅Π΅ 65535.
IPv6 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ Π»Π΅Π³ΠΊΠΎ Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ, Π½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΠΈΡΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΡΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ:
ip -6 addr ...
ip -6 route ...
ip -6 neigh ...
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° «/etc/sysctl.conf»
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward = 1
# Do not accept ICMP redirects (prevent MITM attacks)
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# Do not send ICMP redirects (we are not a router)
net.ipv4.conf.all.send_redirects = 0
# For receiving ARP replies
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.default.arp_filter = 0
# For sending ARP
net.ipv4.conf.all.arp_announce = 0
net.ipv4.conf.default.arp_announce = 0
# Enable IPv6
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
# IPv6 configuration
net.ipv6.conf.all.autoconf = 1
net.ipv6.conf.all.accept_ra = 0
# For OpenVPN
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.proxy_ndp = 1
# For nginx on boot
net.ipv6.ip_nonlocal_bind = 1
ΠΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Β«sysctlΒ» ΠΌΠΎΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠΌΠ΅ΡΡ Π²Π°ΠΆΠ½ΠΎΠ΅.
net.ipv4.ip_forward = 1
ΠΠ΅Π· ΡΡΠΎΠ³ΠΎ OpenVPN Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½ΠΈΠΊΠ°ΠΊ.
net.ipv6.ip_nonlocal_bind = 1
ΠΡΠ±ΠΎΠΉ, ΠΊΡΠΎ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ bind IPv6 (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ nginx) ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ΄ΡΠ»ΡΡ β ΠΏΠΎΠ»ΡΡΠΈΡ ΠΎΡΠΈΠ±ΠΊΡ. Π§ΡΠΎ ΡΠ°ΠΊΠΎΠΉ Π°Π΄ΡΠ΅Ρ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½.
Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΈ Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°.
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.proxy_ndp = 1
ΠΠ΅Π· ΡΡΠΈΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ IPv6 ΡΡΠ°ΡΠΈΠΊ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° OpenVPN Π½Π΅ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΌΠΈΡ.
ΠΡΡΠ³ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΠ»ΠΈ Π½Π΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ Π΄Π΅Π»Ρ ΠΈΠ»ΠΈ Ρ Π½Π΅ ΠΏΠΎΠΌΠ½Ρ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ΠΈ.
ΠΠΎ Π½Π° Π²ΡΡΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ ΠΎΡΡΠ°Π²Π»ΡΡ Β«ΠΊΠ°ΠΊ Π΅ΡΡΡΒ».
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΠ΄Ρ Π²Π°ΡΠΈΠ»ΠΈΡΡ Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° β Π½Π°Π΄ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
sysctl -p
ΠΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎ Β«tableΒ» ΠΏΡΠ°Π²ΠΈΠ»Π°:
============= OpenVPN =============
OpenVPN IPv4 Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±Π΅Π· iptables.
Π£ ΠΌΠ΅Π½Ρ iptables Π²ΠΎΡ ΡΠ°ΠΊΠΈΠ΅ Π΄Π»Ρ VPN:
iptables -A INPUT -p udp -s YY.YY.YY.YY --dport 1194 -j ACCEPT
iptables -A FORWARD -i tun0 -o eno1 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j SNAT --to-source XX.XX.XX.X0
##iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j MASQUERADE
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -j DROP
iptables -A FORWARD -p udp --dport 1194 -j DROP
YY.YY.YY.YY β ΡΡΠΎ ΠΌΠΎΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ IPv4 Π°Π΄ΡΠ΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ.
10.8.0.0/24 β IPv4 ΡΠ΅ΡΡ openvpn. IPv4 Π°Π΄ΡΠ΅ΡΠ° Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² openvpn.
ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠ°Π²ΠΈΠ» Π²Π°ΠΆΠ½Π°.
iptables -A INPUT -p udp -s YY.YY.YY.YY --dport 1194 -j ACCEPT
iptables -A FORWARD -i tun0 -o eno1 -j ACCEPT
...
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -j DROP
iptables -A FORWARD -p udp --dport 1194 -j DROP
ΠΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ IP ΠΌΠΎΠ³ Π±Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ OpenVPN.
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j SNAT --to-source XX.XX.XX.X0
-- ΠΈΠ»ΠΈ --
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j MASQUERADE
ΠΠ»Ρ ΠΏΡΠΎΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΡ IPv4 ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ OpenVPN ΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΠΌ β Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄.
ΠΠ»Ρ ΡΠ°Π·Π½ΡΡ
ΡΠ»ΡΡΠ°Π΅Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π½Π΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ.
ΠΠ»Ρ ΠΌΠΎΠ΅Π³ΠΎ ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡ ΠΎΠ±Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΠΎΡΠΈΡΠ°Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Ρ Π²ΡΠ±ΡΠ°Π» ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ ΠΊΡΡΠ°Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ CPU.
Π§ΡΠΎΠ±Ρ Π²ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ iptables ΠΏΠΎΠ΄Ρ Π²Π°ΡΡΠ²Π°Π»ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ reboot β Π½Π°Π΄ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΈΡ ΠΊΡΠ΄Π°-ΡΠΎ.
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
Π’Π°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° Π²ΡΠ±ΡΠ°Π½Ρ Π½Π΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅Ρ Β«iptables-persistentΒ».
apt-get install iptables-persistent
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° OpenVPN:
apt-get install openvpn easy-rsa
ΠΠ°ΡΡΡΠΎΠΈΠΌ ΡΠ°Π±Π»ΠΎΠ½ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² (ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ):
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
ln -s openssl-1.0.0.cnf openssl.cnf
ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ°Π±Π»ΠΎΠ½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ²:
mcedit vars
...
# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="RU"
export KEY_PROVINCE="Krasnodar"
export KEY_CITY="Dinskaya"
export KEY_ORG="Own"
export KEY_EMAIL="[email protected]"
export KEY_OU="VPN"
# X509 Subject Field
export KEY_NAME="server"
...
Π‘ΠΎΠ·Π΄Π°ΡΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ:
cd ~/openvpn-ca
source vars
./clean-all
./build-ca
./build-key-server server
./build-dh
openvpn --genkey --secret keys/ta.key
ΠΡΠΈΠ³ΠΎΡΠΎΠ²ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈΡΠΎΠ³ΠΎΠ²ΡΠ΅ Β«client-name.opvnΒ» ΡΠ°ΠΉΠ»Ρ:
mkdir -p ~/client-configs/files
chmod 700 ~/client-configs/files
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
mcedit ~/client-configs/base.conf
# Client mode
client
# Interface tunnel type
dev tun
# TCP protocol
proto tcp-client
# Address/Port of VPN server
remote XX.XX.XX.X0 1194
# Don't bind to local port/address
nobind
# Don't need to re-read keys and re-create tun at restart
persist-key
persist-tun
# Remote peer must have a signed certificate
remote-cert-tls server
ns-cert-type server
# Enable compression
comp-lzo
# Custom
ns-cert-type server
tls-auth ta.key 1
cipher DES-EDE3-CBC
ΠΡΠΈΠ³ΠΎΡΠΎΠ²ΠΈΠΌ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΡΠΈΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² Π΅Π΄ΠΈΠ½ΡΠΉ opvn ΡΠ°ΠΉΠ».
mcedit ~/client-configs/make_config.sh
chmod 700 ~/client-configs/make_config.sh
#!/bin/bash
# First argument: Client identifier
KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
cat ${BASE_CONFIG}
<(echo -e '<ca>')
${KEY_DIR}/ca.crt
<(echo -e '</ca>n<cert>')
${KEY_DIR}/.crt
<(echo -e '</cert>n<key>')
${KEY_DIR}/.key
<(echo -e '</key>n<tls-auth>')
${KEY_DIR}/ta.key
<(echo -e '</tls-auth>')
> ${OUTPUT_DIR}/.ovpn
Π‘ΠΎΠ·Π΄Π°ΡΠΌ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° OpenVPN:
cd ~/openvpn-ca
source vars
./build-key client-name
cd ~/client-configs
./make_config.sh client-name
Π€Π°ΠΉΠ» «~/client-configs/files/client-name.ovpn» ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Π½Π° ΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡ.
ΠΠ»Ρ iOS ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π½Π°Π΄ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΡΠΊ:
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠ³Π° Β«tls-authΒ» Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π±Π΅Π· ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π².
Π ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Β«key-direction 1Β» ΡΡΠ°Π·Ρ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠ³ΠΎΠΌ Β«tls-authΒ».
ΠΠ°ΡΡΡΠΎΠΈΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ OpenVPN ΡΠ΅ΡΠ²Π΅ΡΠ°:
cd ~/openvpn-ca/keys
cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | tee /etc/openvpn/server.conf
mcedit /etc/openvpn/server.conf
# Listen port
port 1194
# Protocol
proto tcp-server
# IP tunnel
dev tun0
tun-ipv6
push tun-ipv6
# Master certificate
ca ca.crt
# Server certificate
cert server.crt
# Server private key
key server.key
# Diffie-Hellman parameters
dh dh2048.pem
# Allow clients to communicate with each other
client-to-client
# Client config dir
client-config-dir /etc/openvpn/ccd
# Run client-specific script on connection and disconnection
script-security 2
client-connect "/usr/bin/sudo -u root /etc/openvpn/server-clientconnect.sh"
client-disconnect "/usr/bin/sudo -u root /etc/openvpn/server-clientdisconnect.sh"
# Server mode and client subnets
server 10.8.0.0 255.255.255.0
server-ipv6 XXXX:XXXX:XXXX:XXXX:1:3::/80
topology subnet
# IPv6 routes
push "route-ipv6 XXXX:XXXX:XXXX:XXXX::/64"
push "route-ipv6 2000::/3"
# DNS (for Windows)
# These are OpenDNS
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
# Configure all clients to redirect their default network gateway through the VPN
push "redirect-gateway def1 bypass-dhcp"
push "redirect-gateway ipv6" #For iOS
# Don't need to re-read keys and re-create tun at restart
persist-key
persist-tun
# Ping every 10s. Timeout of 120s.
keepalive 10 120
# Enable compression
comp-lzo
# User and group
user vpn
group vpn
# Log a short status
status openvpn-status.log
# Logging verbosity
##verb 4
# Custom config
tls-auth ta.key 0
cipher DES-EDE3-CBC
ΠΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π·Π°Π΄Π°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π΄ΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ (Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ):
# Client config dir
client-config-dir /etc/openvpn/ccd
Π‘Π°ΠΌΠ°Ρ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΠΈ ΠΊΠ»ΡΡΠ΅Π²Π°Ρ Π΄Π΅ΡΠ°Π»Ρ.
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ OpenVPN Π΅ΡΡ Π½Π΅ ΡΠΌΠ΅Π΅Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ IPv6 gateway Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ².
ΠΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ Β«Π²ΡΡΡΠ½ΡΡΒ» ΠΏΡΠΎΠ±ΡΠ°ΡΡΠ²Π°ΡΡ ΡΡΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
# Run client-specific script on connection and disconnection
script-security 2
client-connect "/usr/bin/sudo -u root /etc/openvpn/server-clientconnect.sh"
client-disconnect "/usr/bin/sudo -u root /etc/openvpn/server-clientdisconnect.sh"
Π€Π°ΠΉΠ» «/etc/openvpn/server-clientconnect.sh»:
#!/bin/sh
# Check client variables
if [ -z "$ifconfig_pool_remote_ip" ] || [ -z "$common_name" ]; then
echo "Missing environment variable."
exit 1
fi
# Load server variables
. /etc/openvpn/variables
ipv6=""
# Find out if there is a specific config with fixed IPv6 for this client
if [ -f "/etc/openvpn/ccd/$common_name" ]; then
# Get fixed IPv6 from client config file
ipv6=$(sed -nr 's/^.*ifconfig-ipv6-push[ t]+([0-9a-fA-F:]+).*$/1/p' "/etc/openvpn/ccd/$common_name")
echo $ipv6
fi
# Get IPv6 from IPv4
if [ -z "$ipv6" ]; then
ipp=$(echo "$ifconfig_pool_remote_ip" | cut -d. -f4)
if ! [ "$ipp" -ge 2 -a "$ipp" -le 254 ] 2>/dev/null; then
echo "Invalid IPv4 part."
exit 1
fi
hexipp=$(printf '%x' $ipp)
ipv6="$prefix$hexipp"
fi
# Create proxy rule
/sbin/ip -6 neigh add proxy $ipv6 dev eno1
Π€Π°ΠΉΠ» «/etc/openvpn/server-clientdisconnect.sh»:
#!/bin/sh
# Check client variables
if [ -z "$ifconfig_pool_remote_ip" ] || [ -z "$common_name" ]; then
echo "Missing environment variable."
exit 1
fi
# Load server variables
. /etc/openvpn/variables
ipv6=""
# Find out if there is a specific config with fixed IPv6 for this client
if [ -f "/etc/openvpn/ccd/$common_name" ]; then
# Get fixed IPv6 from client config file
ipv6=$(sed -nr 's/^.*ifconfig-ipv6-push[ t]+([0-9a-fA-F:]+).*$/1/p' "/etc/openvpn/ccd/$common_name")
fi
# Get IPv6 from IPv4
if [ -z "$ipv6" ]; then
ipp=$(echo "$ifconfig_pool_remote_ip" | cut -d. -f4)
if ! [ "$ipp" -ge 2 -a "$ipp" -le 254 ] 2>/dev/null; then
echo "Invalid IPv4 part."
exit 1
fi
hexipp=$(printf '%x' $ipp)
ipv6="$prefix$hexipp"
fi
# Delete proxy rule
/sbin/ip -6 neigh del proxy $ipv6 dev eno1
ΠΠ±Π° ΡΠΊΡΠΈΠΏΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ°ΠΉΠ» «/etc/openvpn/variables»:
# Subnet
prefix=XXXX:XXXX:XXXX:XXXX:2:
# netmask
prefixlen=112
ΠΠΎΡΠ΅ΠΌΡ ΡΡΡ ΡΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ β Π·Π°ΡΡΡΠ΄Π½ΡΡΡΡ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ.
Π‘Π΅ΠΉΡΠ°Ρ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΡΡΠ°Π½Π½ΡΠΌ netmask = 112 (ΡΡΡ ΠΆΠ΅ 96 Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ).
Π prefix ΡΡΡΠ°Π½Π½ΡΠΉ, Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ΅ΡΠΈ tun0.
ΠΠΎ Π»Π°Π΄Π½ΠΎ, ΠΎΡΡΠ°Π²Π»ΡΡ Β«ΠΊΠ°ΠΊ Π΅ΡΡΡΒ».
cipher DES-EDE3-CBC
ΠΡΠΎ Π½Π° Π»ΡΠ±ΠΈΡΠ΅Π»Ρ β Ρ Π²ΡΠ±ΡΠ°Π» ΡΠ°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
============= Postfix =============
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°:
apt-get install postfix
ΠΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Β«internet-siteΒ».
ΠΠΎΠΉ «/etc/postfix/main.cf» Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
readme_directory = no
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/domain1.com.2018.chained.crt
smtpd_tls_key_file=/etc/ssl/domain1.com.2018.key
smtpd_use_tls=yes
smtpd_tls_auth_only = yes
smtp_bind_address = XX.XX.XX.X0
smtp_bind_address6 = XXXX:XXXX:XXXX:XXXX:1:1:1:1
smtp_tls_security_level = may
smtp_tls_ciphers = export
smtp_tls_protocols = !SSLv2, !SSLv3
smtp_tls_loglevel = 1
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = domain1.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = domain1.com
mydestination = localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
internal_mail_filter_classes = bounce
# Storage type
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
# SMTP-Auth settings
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
#reject_invalid_hostname,
#reject_unknown_recipient_domain,
reject_unauth_destination,
reject_rbl_client sbl.spamhaus.org,
check_policy_service unix:private/policyd-spf
smtpd_helo_restrictions =
#reject_invalid_helo_hostname,
#reject_non_fqdn_helo_hostname,
reject_unknown_helo_hostname
smtpd_client_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_helo_hostname,
permit
# SPF
policyd-spf_time_limit = 3600
# OpenDKIM
milter_default_action = accept
milter_protocol = 6
smtpd_milters = unix:var/run/opendkim/opendkim.sock
non_smtpd_milters = unix:var/run/opendkim/opendkim.sock
# IP address per domain
sender_dependent_default_transport_maps = pcre:/etc/postfix/sdd_transport.pcre
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄Π΅ΡΠ°Π»ΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³Π°.
smtpd_tls_cert_file=/etc/ssl/domain1.com.2018.chained.crt
smtpd_tls_key_file=/etc/ssl/domain1.com.2018.key
ΠΠΎ ΠΌΠ½Π΅Π½ΠΈΡ Ρ Π°Π±ΡΠΎΠ²ΡΠ°Π½ Π΄Π°Π½Π½ΡΠΉ Π±Π»ΠΎΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ `Π΄Π΅Π·ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ Π½Π΅Π²Π΅ΡΠ½ΡΠ΅ ΡΠ΅Π·ΠΈΡΡ`.Π’ΠΎΠ»ΡΠΊΠΎ ΡΠΏΡΡΡΡ 8 Π»Π΅Ρ ΠΏΠΎΡΠ»Π΅ Π½Π°ΡΠ°Π»Π° ΠΌΠΎΠ΅ΠΉ ΠΊΠ°ΡΡΠ΅ΡΡ Ρ ΡΡΠ°Π» ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ SSL.
ΠΠΎΡΡΠΎΠΌΡ Ρ Π²ΠΎΠ·ΡΠΌΡ Π½Π° ΡΠ΅Π±Ρ ΡΠΌΠ΅Π»ΠΎΡΡΡ ΠΎΠΏΠΈΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ SSL (Π½Π΅ ΠΎΡΠ²Π΅ΡΠ°Ρ Π½Π° Π²ΠΎΠΏΡΠΎΡΡ Β«ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ?Β» ΠΈ Β«ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ?Β»).
ΠΡΠ½ΠΎΠ²Π° ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ β ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ (Π΄Π²Π΅ ΠΎΡΠ΅Π½Ρ Π΄Π»ΠΈΠ½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²).
ΠΠ΄ΠΈΠ½ Β«ΠΊΠ»ΡΡΒ» ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ, Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ»ΡΡ Β«ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉΒ». ΠΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Ρ ΡΠ°Π½ΠΈΠΌ ΠΎΡΠ΅Π½Ρ ΡΡΠ°ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ Π² ΡΠ΅ΠΊΡΠ΅ΡΠ΅. ΠΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΡΠ°Π·Π΄Π°ΡΠΌ Π²ΡΠ΅ΠΌ ΠΆΠ΅Π»Π°ΡΡΠΈΠΌ.
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΠΈΡΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΡ ΡΠ΅ΠΊΡΡΠ° ΡΠ°ΠΊ, ΡΡΠΎ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°ΡΡ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²Π»Π°Π΄Π΅Π»Π΅Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°.
ΠΡ Π²ΠΎΡ ΠΈ Π²ΡΡ ΠΎΡΠ½ΠΎΠ²Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.Π¨Π°Π³ β1 β https ΡΠ°ΠΉΡΡ.
ΠΡΠ°ΡΠ·Π΅Ρ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΠ°ΠΉΡΡ ΡΠ·Π½Π°ΡΡ ΠΎΡ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅ΡΠ°, ΡΡΠΎ ΡΠ°ΠΉΡ https ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ.
ΠΠ΅Π± ΡΠ΅ΡΠ²Π΅Ρ ΠΎΡΠ΄Π°ΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ. ΠΡΠ°ΡΠ·Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π·Π°ΡΠΈΡΡΠΎΠ²ΡΠ²Π°Π΅Ρ http-request ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π΅Π³ΠΎ.
ΠΠΎΠ½ΡΠ΅Π½Ρ http-request ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΡ Ρ ΠΊΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ, ΡΠΎ Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ²Π΅Ρ ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅.
Http-request ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ URI. ΠΠΎΡΡΠΎΠΌΡ Π΅ΡΠ»ΠΈ Π² ΡΡΡΠ°Π½Π΅ ΠΏΡΡΡΡΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ Π½Π΅ ΠΊΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°ΠΉΡΡ, Π° ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ β ΡΠΎ Π΄Π»Ρ https ΡΠ°ΠΉΡΠΎΠ² ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.Π¨Π°Π³ β2 β Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡΠ²Π΅Ρ.
ΠΠ΅Π± ΡΠ΅ΡΠ²Π΅Ρ Π΄Π°ΡΡ ΠΎΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΏΠΎ Π΄ΠΎΡΠΎΠ³Π΅.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠ΅ β Π±ΡΠ°ΡΠ·Π΅Ρ Ρ ΡΠ΅Π±Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΡΠ°ΠΊΡΡ-ΠΆΠ΅ ΠΏΠ°ΡΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ-ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ https ΡΠ°ΠΉΡΠ°.
Π Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π·Π°ΠΏΡΠΎΡΠΎΠΌ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΡΠ°ΠΉΡΠ° ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ²ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ.
ΠΠ΅Π± ΡΠ΅ΡΠ²Π΅Ρ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ Π΅Π³ΠΎ ΠΈ ΠΏΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ http-response ΡΠΈΡΡΡΠ΅Ρ ΡΡΠΈΠΌ Π²ΠΎΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌ ΠΊΠ»ΡΡΡΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
Π’Π΅ΠΏΠ΅ΡΡ http-response ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π»Π°Π΄Π°ΡΠ΅Π»Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (ΡΠΎ Π΅ΡΡΡ ΡΠ°ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ).Π¨Π°Π³ β3 β ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°ΡΠΈΡΡΠ½Π½ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΠΎ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠΌΡ ΠΊΠ°Π½Π°Π»Ρ.
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ β2 Π΅ΡΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ β Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π΄ΠΎΠ±ΡΠΎΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠΌ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΡΡ http-request ΠΈ ΠΏΠΎΠ΄ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠΌ ΠΊΠ»ΡΡΠ΅.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ°ΠΊΡΠ°ΡΠ½ΠΎ Π²ΠΈΠ΄Π΅ΡΡ Π²Π΅ΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ -ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠΌΠ΅Π½ΠΈΡΡΡ ΠΊΠ°Π½Π°Π» ΡΠ²ΡΠ·ΠΈ.
ΠΠΎΡΠΎΡΡΡΡ Ρ ΡΡΠΈΠΌ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ β Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΊΠ°ΠΊ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌ ΠΊΠ»ΡΡΡΠΌ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΠ΅Π± ΡΠ΅ΡΠ²Π΅Ρ ΡΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΠ²Π΅Ρ ΡΠΈΠΏΠ° Β«ΡΠ²ΠΎΠΉ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠΉ Π²ΠΎΡΒ» ΠΈ ΡΠΈΡΡΡΠ΅Ρ ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΠΌ ΠΆΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌ ΠΊΠ»ΡΡΡΠΌ.
ΠΡΠ°ΡΠ·Π΅Ρ ΡΠΌΠΎΡΡΠΈΡ ΠΎΡΠ²Π΅Ρ β Π΅ΡΠ»ΠΈ ΠΏΡΠΈΡΠ»ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Β«ΡΠ²ΠΎΠΉ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠΉ Π²ΠΎΡΒ» β ΡΠΎ ΡΡΠΎ 100% Π³Π°ΡΠ°Π½ΡΠΈΡ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠΉ ΠΊΠ°Π½Π°Π» ΡΠ²ΡΠ·ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½.
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½?
Π‘Π°ΠΌΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° ΡΠ²ΡΠ·ΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ ping*2. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ 20ΠΌΡ.
ΠΠ»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ»ΠΈ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΡΠΎΡΠΎΠ½. ΠΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π·Π° ΠΏΠ°ΡΡ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄.
ΠΠ·Π»ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠ³Π° ΠΊΠ»ΡΡΠ° Π·Π°ΠΉΠΌΡ Π΄Π΅ΡΡΡΠΈΠ»Π΅ΡΠΈΡ Π½Π° ΡΡΠΏΠ΅ΡΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅.Π¨Π°Π³ β4 β ΠΏΡΠ±Π»ΠΈΡΠ½Π°Ρ ΠΠ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ.
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π²ΠΎ Π²ΡΠ΅ΠΉ ΡΡΠΎΠΉ ΠΈΡΡΠΎΡΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π»Ρ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½ΠΈΠΊΠ° ΡΠΈΠ΄ΡΡΠ΅Π³ΠΎ Π½Π° ΠΊΠ°Π½Π°Π»Π΅ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ²ΠΈΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ, Π° ΡΠ΅ΡΠ²Π΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ. Π ΡΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π² ΠΎΠ±Π΅ ΡΡΠΎΡΠΎΠ½Ρ.
Π’ΠΎΠ³Π΄Π° Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½ΠΈΠΊ Π±ΡΠ΄Π΅Ρ Π²ΠΈΠ΄Π΅ΡΡ Π²Π΅ΡΡ ΡΡΠ°ΡΠΈΠΊ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Β«ΠΏΠΎΠ΄ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡΒ» ΡΡΠ°ΡΠΈΠΊ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π°Π΄ΡΠ΅Ρ ΠΊΡΠ΄Π° ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π΄Π΅Π½ΡΠ³ΠΈ ΠΈΠ»ΠΈ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠΎΠ»Ρ ΠΎΡ ΠΎΠ½Π»Π°ΠΉΠ½-Π±Π°Π½ΠΊΠ° ΠΈΠ»ΠΈ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Β«Π½Π΅ΡΠ³ΠΎΠ΄Π½ΡΠΉΒ» ΠΊΠΎΠ½ΡΠ΅Π½Ρ.
ΠΠ»Ρ Π±ΠΎΡΡΠ±Ρ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π»ΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΠΠ Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΊΠ»ΡΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ https ΡΠ°ΠΉΡΠ°.
ΠΠ°ΠΆΠ΄ΡΠΉ Π±ΡΠ°ΡΠ·Π΅Ρ Β«Π·Π½Π°Π΅ΡΒ» ΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠΊΠΎΠ»ΠΎ 200 ΡΠ°ΠΊΠΈΡ ΠΠ. ΠΡΠΎ ΠΏΡΠ΅Π΄ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ Π±ΡΠ°ΡΠ·Π΅Ρ.
Β«ΠΠ½Π°Π½ΠΈΠ΅Β» ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΎ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌ ΠΊΠ»ΡΡΡΠΌ ΠΎΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°. Π’ΠΎ Π΅ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠ΅Π½ΡΡΠΎΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Π»Π°ΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.Π’Π΅ΠΏΠ΅ΡΡ Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ SSL Π΄Π»Ρ https.
ΠΡΠ»ΠΈ ΠΏΠΎΡΠ΅Π²Π΅Π»ΠΈΡΡ ΠΌΠΎΠ·Π³Π°ΠΌΠΈ β ΡΠΎ ΡΡΠ°Π½Π΅Ρ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΡΠΏΠ΅Ρ-ΡΠ»ΡΠΆΠ±Ρ ΠΌΠΎΠ³ΡΡ Π² ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ΅Π³ΠΎ-ΡΠΎ Π²Π·Π»ΠΎΠΌΠ°ΡΡ. ΠΠΎ ΡΡΠΎ ΠΈΠΌ Π±ΡΠ΄Π΅Ρ ΡΡΠΎΠΈΡΡ ΡΡΠ΄ΠΎΠ²ΠΈΡΠ½ΡΡ ΡΡΠΈΠ»ΠΈΠΉ.
Π ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠΌ ΠΌΠ΅Π½ΡΡΠ΅ ΠΠΠ ΠΈΠ»ΠΈ Π¦Π Π£ β ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Π·Π»ΠΎΠΌΠ°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π·Π°ΡΠΈΡΡ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ vip.ΠΡΡ Π΄ΠΎΠ±Π°Π²Π»Ρ ΠΏΡΠΎ ssh ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. Π’Π°ΠΌ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π½Π΅Ρ, ΠΊΠ°ΠΊ ΠΆΠ΅ Π±ΡΡΡ. ΠΠΎΠΏΡΠΎΡ ΡΠ΅ΡΠ°Π΅ΡΡΡ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ.
ΠΠ°ΡΠΈΠ°Π½Ρ ssh-ΠΏΠΎ-ΠΏΠ°ΡΠΎΠ»Ρ:
ΠΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ ssh-ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈΡΡ, ΡΡΠΎ ΡΡΡ Ρ Π½Π°Ρ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΎΡ ssh-ΡΠ΅ΡΠ²Π΅ΡΠ°.
Π ΠΏΡΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΡ Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Β«Π½ΠΎΠ²ΡΠΉ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΎΡ ssh-ΡΠ΅ΡΠ²Π΅ΡΠ°Β» β Π±ΡΠ΄Π΅Ρ ΠΎΠ·Π½Π°ΡΠ°ΡΡ, ΡΡΠΎ Π²Π°Ρ ΠΏΡΡΠ°ΡΡΡΡ ΠΏΡΠΎΡΠ»ΡΡΠ°ΡΡ.
ΠΠ»ΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ Π²Π°Ρ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π»ΠΈ, Π° ΡΠ΅ΠΏΠ΅ΡΡ Π²Ρ ΠΎΠ±ΡΠ°Π΅ΡΠ΅ΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π±Π΅Π· ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊΠΎΠ².
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΡ ΠΏΡΠΎΡΠ»ΡΡΠΊΠΈ Π»Π΅Π³ΠΊΠΎ, Π±ΡΡΡΡΠΎ ΠΈ Π±Π΅Π· ΡΡΠΈΠ»ΠΈΠΉ Π²ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ β ΡΡΠΎΠΉ Π°ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΡΠΎΠ±ΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.ΠΠ°ΡΠΈΠ°Π½Ρ ssh-ΠΏΠΎ-ΠΊΠ»ΡΡΡ:
ΠΠ΅ΡΡΠΌ ΡΠ»ΡΡΠΊΡ, Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π½Π° Π½Π΅Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π΄Π»Ρ ssh-ΡΠ΅ΡΠ²Π΅ΡΠ° (Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΡΠ΅ΡΠΌΠΈΠ½Ρ ΠΈ ΠΊΡΡΠ° Π½ΡΠ°Π½ΡΠΎΠ² ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ , Π½ΠΎ Ρ ΠΏΠΈΡΡ Π»ΠΈΠΊΠ±Π΅Π·, Π° Π½Π΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ).
ΠΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅ Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ ssh-ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈ Π΅Π³ΠΎ ΡΠΎΠΆΠ΅ Π΄Π΅ΡΠΆΠΈΠΌ Π² ΡΠ΅ΠΊΡΠ΅ΡΠ΅.
ΠΡΠΈΠ½ΠΎΡΠΈΠΌ ΡΠ»ΡΡΠΊΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ, Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ, ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ, Π° ΡΠ»ΡΡΠΊΡ ΡΠΆΠΈΠ³Π°Π΅ΠΌ ΠΈ ΡΠ°Π·Π²Π΅ΠΈΠ²Π°Π΅ΠΌ ΠΏΡΠ°Ρ ΠΏΠΎ Π²Π΅ΡΡΡ (ΠΈΠ»ΠΈ Ρ ΠΎΡΡΠ±Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅ΠΌ Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π½ΡΠ»ΡΠΌΠΈ).
ΠΠΎΡ ΠΈ Π²ΡΡ β ΠΏΠΎΡΠ»Π΅ ΡΠ°ΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Π·Π»ΠΎΠΌΠ°ΡΡ ΡΠ°ΠΊΠΎΠ΅ ssh ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅. Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ Π»Π΅Ρ Π·Π° 10 Π½Π° ΡΡΠΏΠ΅ΡΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΠ°ΡΠΈΠΊ β Π½ΠΎ ΡΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΠΈΡΡΠΎΡΠΈΡ.ΠΡΠΎΡΡ ΠΏΡΠΎΡΠ΅Π½ΠΈΡ Π·Π° ΠΎΡΡΡΠΎΠΏ.
ΠΡΠ°ΠΊ, ΡΠ΅ΠΏΠ΅ΡΡ ΠΊΠΎΠ³Π΄Π° ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΡΠ΅ΠΎΡΠΈΡ. Π Π°ΡΡΠΊΠ°ΠΆΡ ΠΏΡΠΎ flow ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ssl ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°.
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Β«openssl genrsaΒ» ΠΌΡ ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΈ Β«Π·Π°Π³ΠΎΡΠΎΠ²ΠΎΠΊΒ» Π΄Π»Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°.
Β«Π·Π°Π³ΠΎΡΠΎΠ²ΠΎΠΊΒ» ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΠΏΠ»Π°ΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ $9 Π·Π° ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ.
Π§Π΅ΡΠ΅Π· ΠΏΠ°ΡΡ ΡΠ°ΡΠΎΠ² ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡ ΡΡΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π½Π°Ρ Β«ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉΒ» ΠΊΠ»ΡΡ ΠΈ Π΅ΡΡ Π½Π°Π±ΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ.
ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΠ»Π°ΡΠΈΡΡ Π·Π° ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° β Π²ΠΎΠΏΡΠΎΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ, ΡΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎ Π² ΡΡΠΌ ΡΠΌΡΡΠ» Π½Π°Π΄ΠΏΠΈΡΠΈ:
smtpd_tls_key_file=/etc/ssl/domain1.com.2018.key
Π ΠΏΠ°ΠΏΠΊΠ΅ «/etc/ssl» ΡΠ»ΠΎΠΆΠ΅Π½Ρ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ ssl Π²ΠΎΠΏΡΠΎΡΠΎΠ².
domain1.com β Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½Π°.
2018 β Π³ΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ.
Β«keyΒ» β ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ°ΠΉΠ» ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ-ΠΊΠ»ΡΡ.
Π ΡΠΌΡΡΠ» ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°:
smtpd_tls_cert_file=/etc/ssl/domain1.com.2018.chained.crt
domain1.com β Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½Π°.
2018 β Π³ΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ.
chained β ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠ° ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ
ΠΊΠ»ΡΡΠ΅ΠΉ (ΠΏΠ΅ΡΠ²ΡΠΉ β Π½Π°Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ β ΡΡΠΎ ΠΏΡΠΈΡΠ»ΠΎ ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΎΡΠΎΡΠΌΠΈΠ²ΡΠ΅ΠΉ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ).
crt β ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ (ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Ρ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΡΠΌΠΈ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ).
smtp_bind_address = XX.XX.XX.X0
smtp_bind_address6 = XXXX:XXXX:XXXX:XXXX:1:1:1:1
ΠΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°.
ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ° Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠΏΠ°ΠΌΠ° (Π±Π΅Π· Π²Π°ΡΠ΅ΠΉ Π²ΠΎΠ»ΠΈ).
ΠΠΎΡΠΎΠΌ Π΄ΠΎΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ Π²ΡΠ΅ΠΌ, ΡΡΠΎ Π²Ρ Π½Π΅ Π²ΠΈΠ½ΠΎΠ²Π°ΡΡ.
recipient_delimiter = +
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π½Π΅ Π·Π½Π°ΡΡ, ΡΠ°ΠΊ Π²ΠΎΡ ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π΄Π»Ρ ΡΠ°Π½ΠΆΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΠ΅ΠΌ, ΠΈ ΡΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎΠΌ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎΡΡΠΎΠ²ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ².
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΡΠΈΠΊ Β«[email protected]Β» ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΎΡΠΏΡΠ°Π²ΡΡ Π½Π° Β«[email protected]Β» β ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΠΎ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ.
inet_protocols = ipv4
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ±ΠΈΠ²Π°ΡΡ Ρ ΡΠΎΠ»ΠΊΡ.
ΠΠΎ ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΠΊ. ΠΠ°ΠΆΠ΄ΡΠΉ Π½ΠΎΠ²ΡΠΉ Π΄ΠΎΠΌΠ΅Π½ β ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ IPv4, ΠΏΠΎΡΠΎΠΌ Π²ΠΊΠ»ΡΡΠ°Ρ IPv6 Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ.
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
Π’ΡΡ ΠΌΡ Π·Π°Π΄Π°ΡΠΌ, ΡΡΠΎ Π²ΡΡ Π²Ρ
ΠΎΠ΄ΡΡΠ°Ρ ΠΏΠΎΡΡΠ° ΡΡ
ΠΎΠ΄ΠΈΡ Π² dovecot.
Π ΠΏΡΠ°Π²ΠΈΠ»Π° Π΄Π»Ρ domain, mailbox, alias β ΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΠΠ.
/etc/postfix/mysql-virtual-mailbox-domains.cf
user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = servermail
query = SELECT 1 FROM virtual_domains WHERE name='%s'
/etc/postfix/mysql-virtual-mailbox-maps.cf
user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = servermail
query = SELECT 1 FROM virtual_users WHERE email='%s'
/etc/postfix/mysql-virtual-alias-maps.cf
user = usermail
password = mailpassword
hosts = 127.0.0.1
dbname = servermail
query = SELECT destination FROM virtual_aliases WHERE source='%s'
# SMTP-Auth settings
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
Π’Π΅ΠΏΠ΅ΡΡ postfix Π·Π½Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠΎΡΡΡ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Ρ dovecot.
ΠΠ½Π΅ ΠΏΡΠ°Π²Π΄Π° Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Π·Π°ΡΠ΅ΠΌ ΡΡΠΎ ΡΡΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ. ΠΡ ΠΆΠ΅ ΡΠΆΠ΅ ΡΠΊΠ°Π·Π°Π»ΠΈ Π² Β«virtual_transportΒ» Π²ΡΡ ΡΡΠΎ Π½Π°Π΄ΠΎ.
ΠΠΎ postfix ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΡΠ΅Π½Ρ ΡΡΠ°ΡΠ°Ρ β Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅ ΡΡΠΎ ΠΊΠ°ΡΡΡΠ»ΠΈ ΠΎΡ ΡΡΠ°ΡΡΡ Π²ΡΠ΅ΠΌΡΠ½.
smtpd_recipient_restrictions =
...
smtpd_helo_restrictions =
...
smtpd_client_restrictions =
...
ΠΡΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ.
Π ΠΌΠΎΡΠΌ ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π΅ΡΡΡ 3 ΠΏΠΎΡΡΠΎΠ²ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΡΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΡΠ΅Π½Ρ ΡΠ°Π·Π½ΡΠ΅ ΠΈΠ·-Π·Π° ΡΠ°Π·Π½ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π½Π°Π΄ΠΎ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ β ΠΈΠ½Π°ΡΠ΅ ΡΠΏΠ°ΠΌ Ρ Π»ΡΠ½Π΅Ρ ΠΊ Π²Π°ΠΌ ΠΈΠ»ΠΈ Π΅ΡΡ Ρ ΡΠΆΠ΅ β ΡΠΏΠ°ΠΌ Ρ Π»ΡΠ½Π΅Ρ ΠΎΡ Π²Π°Ρ.
# SPF
policyd-spf_time_limit = 3600
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π΄Π»Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π° ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ SPF Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΠΏΠΈΡΠ΅ΠΌ.
# OpenDKIM
milter_default_action = accept
milter_protocol = 6
smtpd_milters = unix:var/run/opendkim/opendkim.sock
non_smtpd_milters = unix:var/run/opendkim/opendkim.sock
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ°, ΡΡΠΎ Π²ΡΠ΅ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΏΠΈΡΡΠΌΠ° ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ½Π°Π±ΠΆΠ°ΡΡ DKIM ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ.
# IP address per domain
sender_dependent_default_transport_maps = pcre:/etc/postfix/sdd_transport.pcre
ΠΡΠΎ ΠΊΠ»ΡΡΠ΅Π²Π°Ρ Π΄Π΅ΡΠ°Π»Ρ Π² ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΈ ΠΎΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΠΈΡΠ΅ΠΌ ΠΎΡ php ΡΠΊΡΠΈΠΏΡΠΎΠ².
Π€Π°ΠΉΠ» «/etc/postfix/sdd_transport.pcre»:
/^[email protected]$/ domain1:
/^[email protected]$/ domain2:
/^[email protected]$/ domain3:
/@domain1.com$/ domain1:
/@domain2.com$/ domain2:
/@domain3.com$/ domain3:
Π‘Π»Π΅Π²Π° β ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π‘ΠΏΡΠ°Π²Π° β ΠΌΠ΅ΡΠΊΠ°, ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΠΈΡΡΠΌΠΎ.
Postfix Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΌΠ΅ΡΠΊΠΎΠΉ β ΡΡΡΡΡ Π΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΈΡΡΠΌΠ°.ΠΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ postfix Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΈΡΡΠΌΠ° β Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² Β«master.cfΒ».
Π‘ΡΡΠΎΠΊΠΈ 4, 5, 6 β ΠΎΠ½ΠΈ Π³Π»Π°Π²Π½ΡΠ΅. ΠΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΏΠΈΡΡΠΌΠΎ β ΡΠ°ΠΊΡΡ ΠΌΠ΅ΡΠΊΡ ΠΈ ΡΡΠ°Π²ΠΈΠΌ.
ΠΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π² php ΡΠΊΡΠΈΠΏΡΠ°Ρ Π² ΡΡΠ°ΡΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ»Π΅ Β«fromΒ». Π’ΠΎΠ³Π΄Π° Π½Π° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.Π‘ΡΠ°ΡΡΡ ΠΈ ΡΠ°ΠΊ ΠΎΠ±ΡΠΈΡΠ½Π°Ρ β Π½Π΅ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΎΡΠ²Π»Π΅ΠΊΠ°ΡΡΡΡ Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΡ nginx+fpm.
ΠΡΠ°ΡΠΊΠΎ β ΠΌΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ° Π·Π°Π΄Π°ΡΠΌ ΡΠ²ΠΎΠ΅Π³ΠΎ linux-user Π²Π»Π°Π΄Π΅Π»ΡΡΠ°. Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ²ΠΎΠΉ fpm-pool.
Fpm-pool ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π»ΡΠ±ΡΡ Π²Π΅ΡΡΠΈΡ php (ΡΡΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΠΊΠΎΠ³Π΄Π° Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π΄Π»Ρ ΡΠΎΡΠ΅Π΄Π½ΠΈΡ ΡΠ°ΠΉΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΡ Π²Π΅ΡΡΠΈΡ php ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ°Π·Π½ΡΠΉ php.ini).
Π’Π°ΠΊ Π²ΠΎΡ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ linux-user Β«www-domain2Β» Π΅ΡΡΡ ΡΠ°ΠΉΡ domain2.com. ΠΠ° ΡΡΠΎΠΌ ΡΠ°ΠΉΡΠ΅ Π΅ΡΡΡ ΠΊΠΎΠ΄ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΠΈΡΠ΅ΠΌ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΠΎΠ»Ρ from.
Π’Π°ΠΊ Π²ΠΎΡ Π΄Π°ΠΆΠ΅ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΈΡΡΠΌΠ° Π±ΡΠ΄ΡΡ ΡΡ ΠΎΠ΄ΠΈΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠΏΠ°Π΄ΡΡ Π² ΡΠΏΠ°ΠΌ.
ΠΠΎΠΉ «/etc/postfix/master.cf» Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
...
smtp inet n - y - - smtpd
-o content_filter=spamassassin
...
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
...
policyd-spf unix - n n - 0 spawn
user=policyd-spf argv=/usr/bin/policyd-spf
spamassassin unix - n n - - pipe
user=spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
...
domain1 unix - - n - - smtp
-o smtp_bind_address=XX.XX.XX.X1
-o smtp_helo_name=domain1.com
-o inet_protocols=all
-o smtp_bind_address6=XXXX:XXXX:XXXX:XXXX:1:1:1:1
-o syslog_name=postfix-domain1
domain2 unix - - n - - smtp
-o smtp_bind_address=XX.XX.XX.X5
-o smtp_helo_name=domain2.com
-o inet_protocols=all
-o smtp_bind_address6=XXXX:XXXX:XXXX:XXXX:1:2:1:1
-o syslog_name=postfix-domain2
domain3 unix - - n - - smtp
-o smtp_bind_address=XX.XX.XX.X2
-o smtp_helo_name=domain3
-o inet_protocols=all
-o smtp_bind_address6=XXXX:XXXX:XXXX:XXXX:1:1:5:1
-o syslog_name=postfix-domain3
Π€Π°ΠΉΠ» ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ β ΠΎΠ½ ΠΈ ΡΠ°ΠΊ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ.
ΠΡΠΌΠ΅ΡΠΈΠ» ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ.
smtp inet n - y - - smtpd
-o content_filter=spamassassin
...
spamassassin unix - n n - - pipe
user=spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
ΠΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΡΠΎ spamassasin, ΠΎ Π½ΡΠΌ ΠΏΠΎΠ·ΠΆΠ΅.
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
Π Π°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ ΠΊ ΠΏΠΎΡΡΠΎΠ²ΠΎΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ ΡΠ΅ΡΠ΅Π· 587 ΠΏΠΎΡΡ.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°ΡΡΡΡ.
policyd-spf unix - n n - 0 spawn
user=policyd-spf argv=/usr/bin/policyd-spf
ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ SPF.
apt-get install postfix-policyd-spf-python
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ SPF ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π²ΡΡΠ΅.
domain1 unix - - n - - smtp
-o smtp_bind_address=XX.XX.XX.X1
-o smtp_helo_name=domain1.com
-o inet_protocols=all
-o smtp_bind_address6=XXXX:XXXX:XXXX:XXXX:1:1:1:1
-o syslog_name=postfix-domain1
Π ΡΡΠΎ ΡΠ°ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅. ΠΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠΈΡΡΠΌΠ° Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ IPv4/IPv6 Π°Π΄ΡΠ΅ΡΠ°.
ΠΠ΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ ΡΠ°Π΄ΠΈ rDNS. rDNS β ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎ IP Π°Π΄ΡΠ΅ΡΡ.
Π Π΄Π»Ρ ΠΏΠΎΡΡΡ ΡΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ helo ΡΠΎΡΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ rDNS ΡΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ email.ΠΡΠ»ΠΈ helo Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π΄ΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΡΡΡ, ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠ³ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΠΏΠΈΡΡΠΌΠΎ β Π½Π°ΡΠΈΡΠ»ΡΡΡΡΡ ΡΠΏΠ°ΠΌ ΠΎΡΠΊΠΈ.
Helo Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ rDNS β Π½Π°ΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΠ°ΠΌ ΠΎΡΠΊΠΎΠ².
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ²ΠΎΠΉ IP Π°Π΄ΡΠ΅Ρ.
ΠΠ»Ρ OVH β Π² ΠΊΠΎΠ½ΡΠΎΠ»ΡΠΊΠ΅ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ rDNS.
ΠΠ»Ρ tech.ru β ΡΠ΅ΡΠ΅Π· ΡΠ°ΠΏΠΏΠΎΡΡ Π²ΠΎΠΏΡΠΎΡ ΡΠ΅ΡΠ°Π΅ΡΡΡ.
ΠΠ»Ρ AWS β ΡΠ΅ΡΠ΅Π· ΡΠ°ΠΏΠΏΠΎΡΡ Π²ΠΎΠΏΡΠΎΡ ΡΠ΅ΡΠ°Π΅ΡΡΡ.
Β«inet_protocolsΒ» ΠΈ Β«smtp_bind_address6Β» β ΡΡΠΎ ΠΌΡ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ IPv6.
ΠΠ»Ρ IPv6 ΡΠΎΠΆΠ΅ Π½Π°Π΄ΠΎ rDNS ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°ΡΡ.
Β«syslog_nameΒ» β Π° ΡΡΠΎ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΡΠ΅Π½ΠΈΡ Π»ΠΎΠ³ΠΎΠ².
ΠΠΎΠΊΡΠΏΠ°ΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ
============= Dovecot =============
apt-get install dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql dovecot-antispam
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° mysql, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ.
Π€Π°ΠΉΠ» «/etc/dovecot/conf.d/10-auth.conf»
disable_plaintext_auth = yes
auth_mechanisms = plain login
ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.
Π€Π°ΠΉΠ» «/etc/dovecot/conf.d/10-mail.conf»
mail_location = maildir:/var/mail/vhosts/%d/%n
Π’ΡΡ ΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΌΠ΅ΡΡΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΈΡΠ΅ΠΌ.
Π― Ρ ΠΎΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΡ Π² ΡΠ°ΠΉΠ»Π°Ρ ΠΈ Π±ΡΠ»ΠΈ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎ Π΄ΠΎΠΌΠ΅Π½Π°ΠΌ.
Π€Π°ΠΉΠ» «/etc/dovecot/conf.d/10-master.conf»
service imap-login {
inet_listener imap {
port = 0
}
inet_listener imaps {
address = XX.XX.XX.X1, XX.XX.XX.X2, XX.XX.XX.X5, [XXXX:XXXX:XXXX:XXXX:1:1:1:1], [XXXX:XXXX:XXXX:XXXX:1:2:1:1], [XXXX:XXXX:XXXX:XXXX:1:1:5:1]
port = 993
ssl = yes
}
}
service pop3-login {
inet_listener pop3 {
port = 0
}
inet_listener pop3s {
address = XX.XX.XX.X1, XX.XX.XX.X2, XX.XX.XX.X5, [XXXX:XXXX:XXXX:XXXX:1:1:1:1], [XXXX:XXXX:XXXX:XXXX:1:2:1:1], [XXXX:XXXX:XXXX:XXXX:1:1:5:1]
port = 995
ssl = yes
}
}
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
}
service imap {
}
service pop3 {
}
service auth {
unix_listener auth-userdb {
mode = 0600
user = vmail
}
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
user = dovecot
}
service auth-worker {
user = vmail
}
service dict {
unix_listener dict {
}
}
ΠΡΠΎ Π³Π»Π°Π²Π½ΡΠΉ ΡΠ°ΠΉΠ» Π½Π°ΡΡΡΠΎΠ΅ΠΊ dovecot.
Π’ΡΡ ΠΌΡ ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ Π½Π΅ Π·Π°ΡΠΈΡΡΠ½Π½ΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
Π Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π·Π°ΡΠΈΡΡΠ½Π½ΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
Π€Π°ΠΉΠ» «/etc/dovecot/conf.d/10-ssl.conf»
ssl = required
ssl_cert = </etc/nginx/ssl/domain1.com.2018.chained.crt
ssl_key = </etc/nginx/ssl/domain1.com.2018.key
local XX.XX.XX.X5 {
ssl_cert = </etc/nginx/ssl/domain2.com.2018.chained.crt
ssl_key = </etc/nginx/ssl/domain2.com.2018.key
}
ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ ssl. Π£ΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ, ΡΡΠΎ ssl β ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ.
Π ΡΠ°ΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ. Π Π²Π°ΠΆΠ½Π°Ρ Π΄Π΅ΡΠ°Π»Ρ β Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° Β«localΒ». Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΏΡΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ IPv4 β ΠΊΠ°ΠΊΠΎΠΉ ssl ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.ΠΡΡΠ°ΡΠΈ IPv6 ΡΡΡ Π½Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½, ΠΈΡΠΏΡΠ°Π²Π»Ρ ΡΡΠΎ ΡΠΏΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ-Π½ΠΈΡΡ ΠΏΠΎΡΠΎΠΌ.
XX.XX.XX.X5 (domain2) β ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π΅Ρ. ΠΠ»Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ domain1.com.
XX.XX.XX.X2 (domain3) β ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ Π΅ΡΡΡ, Π΄Π»Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ domain1.com ΠΈΠ»ΠΈ domain3.com .
Π€Π°ΠΉΠ» «/etc/dovecot/conf.d/15-lda.conf»
protocol lda {
mail_plugins = $mail_plugins sieve
}
ΠΡΠΎ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π΄Π»Ρ spamassassin.
Π€Π°ΠΉΠ» «/etc/dovecot/conf.d/20-imap.conf»
protocol imap {
mail_plugins = $mail_plugins antispam
}
ΠΡΠΎ antispam ΠΏΠ»Π°Π³ΠΈΠ½. ΠΡΠΆΠ΅Π½ Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ spamassasin Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° Π²/ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ Β«SpamΒ».
Π€Π°ΠΉΠ» «/etc/dovecot/conf.d/20-pop3.conf»
protocol pop3 {
}
ΠΡΠΎΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΡΠ°ΠΉΠ» Π΅ΡΡΡ.
Π€Π°ΠΉΠ» «/etc/dovecot/conf.d/20-lmtp.conf»
protocol lmtp {
mail_plugins = $mail_plugins sieve
postmaster_address = [email protected]
}
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° lmtp.
Π€Π°ΠΉΠ» «/etc/dovecot/conf.d/90-antispam.conf»
plugin {
antispam_backend = pipe
antispam_trash = Trash;trash
antispam_spam = Junk;Spam;SPAM
antispam_pipe_program_spam_arg = --spam
antispam_pipe_program_notspam_arg = --ham
antispam_pipe_program = /usr/bin/sa-learn
antispam_pipe_program_args = --username=%Lu
}
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ spamassasin Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° Π²/ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ Β«SpamΒ».
Π€Π°ΠΉΠ» «/etc/dovecot/conf.d/90-sieve.conf»
plugin {
sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
sieve_after = /var/lib/dovecot/sieve/default.sieve
}
Π€Π°ΠΉΠ» Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠΎ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΌΠΈ ΠΏΠΈΡΡΠΌΠ°ΠΌΠΈ.
Π€Π°ΠΉΠ» «/var/lib/dovecot/sieve/default.sieve»
require ["fileinto", "mailbox"];
if header :contains "X-Spam-Flag" "YES" {
fileinto :create "Spam";
}
ΠΠ°Π΄ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»: Β«sievec default.sieveΒ».
Π€Π°ΠΉΠ» «/etc/dovecot/conf.d/auth-sql.conf.ext»
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
}
Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ sql ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π»Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ.
Π ΡΠ°ΠΌ ΡΠ°ΠΉΠ» β ΠΊΠ°ΠΊ ΡΠΏΠΎΡΠΎΠ± Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ.
Π€Π°ΠΉΠ» «/etc/dovecot/dovecot-sql.conf.ext»
driver = mysql
connect = host=127.0.0.1 dbname=servermail user=usermail password=password
default_pass_scheme = SHA512-CRYPT
password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';
ΠΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌ Π΄Π»Ρ postfix.
Π€Π°ΠΉΠ» «/etc/dovecot/dovecot.conf»
protocols = imap lmtp pop3
listen = *, ::
dict {
}
!include conf.d/*.conf
!include_try local.conf
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
ΠΠ°ΠΆΠ½ΠΎ ΡΠΎ, ΡΡΠΎ ΠΌΡ ΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ-Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ.
============= SpamAssassin =============
apt-get install spamassassin spamc
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΏΠ°ΠΊΠ΅ΡΡ.
adduser spamd --disabled-login
ΠΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ.
systemctl enable spamassassin.service
ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ Π°Π²ΡΠΎ-Π·Π°Π³ΡΡΠ·ΠΊΡ spamassassin ΡΠ΅ΡΠ²ΠΈΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅.
Π€Π°ΠΉΠ» «/etc/default/spamassassin»:
CRON=1
ΠΠΊΠ»ΡΡΠ°Π΅Π² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ» Β«ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡΒ».
Π€Π°ΠΉΠ» «/etc/spamassassin/local.cf»:
report_safe 0
use_bayes 1
bayes_auto_learn 1
bayes_auto_expire 1
bayes_store_module Mail::SpamAssassin::BayesStore::MySQL
bayes_sql_dsn DBI:mysql:sa:localhost:3306
bayes_sql_username sa
bayes_sql_password password
ΠΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π² mysql ΠΠ Β«saΒ» Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Β«saΒ» Ρ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ Β«passwordΒ» (Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π° ΡΡΠΎ-ΡΠΎ Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΠΎΠ΅).
report_safe β ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠΈΡΡΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΡΠ»Π°ΡΡΡΡ ΠΎΡΡΡΡ ΠΎ ΠΏΠΈΡΡΠΌΠ΅-ΡΠΏΠ°ΠΌΠ΅.
use_bayes β ΡΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ spamassassin.
ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ spamassassin ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»ΠΈΡΡ ΡΠ°Π½Π΅Π΅ ΠΏΠΎ ΡΡΠ°ΡΡΠ΅.
============= ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Ρ =============
ΠΡΡ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ Π·Π°ΠΊΠΈΠ½ΡΡΡ ΠΈΠ΄Π΅Ρ Π² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎ ΡΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΡΡΠΎΠ²Π΅Π½Ρ Π·Π°ΡΠΈΡΡΠ½Π½ΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ»Π°Π΅ΠΌΡΡ ΠΏΠΈΡΠ΅ΠΌ. Π Π°Π· ΡΠΆ Ρ ΡΠ°ΠΊ Π³Π»ΡΠ±ΠΎΠΊΠΎ ΠΏΠΎΠ³ΡΡΠ·ΠΈΠ»ΡΡ Π² ΡΠ΅ΠΌΡ ΠΏΠΎΡΡΡ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠ³ Π±Ρ Ρ ΡΠ΅Π±Ρ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅ (outlook, thunderbird, browser-plugin, …) ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ°ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ. ΠΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΈ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ. ΠΡΠ±Π»ΠΈΡΠ½ΡΠΉ β ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π² DNS. ΠΡΠΈΠ²Π°ΡΠ½ΡΠΉ β ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅. ΠΠΎΡΡΠΎΠ²ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ° Π±Ρ ΡΠΌΠ΅Π»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΠ°ΡΡ.
Π Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ ΡΠΏΠ°ΠΌΠ° ΠΏΡΠΈ ΡΠ°ΠΊΠΈΡ ΠΏΠΈΡΡΠΌΠ°Ρ (Π΄Π°, ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΆΠΈ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ) β Π½Π°Π΄ΠΎ Π±ΡΠ΄Π΅Ρ Π²Π²Π΅ΡΡΠΈ 3 ΠΏΡΠ°Π²ΠΈΠ»Π°:
- ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°Ρ Π½Π°ΡΡΠΎΡΡΠ°Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡ DKIM, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ SPF, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ rDNS.
- ΠΠ΅ΠΉΡΠΎΠ½Π½Π°Ρ ΡΠ΅ΡΡ Π½Π° ΡΠ΅ΠΌΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π°Π½ΡΠΈΡΠΏΠ°ΠΌΠ° + ΠΠ ΠΊ Π½Π΅ΠΉ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
- ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°ΠΊΠΈΠΌ, ΡΡΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΠ°Ρ ΡΡΠΎΡΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΡΡΠ°ΡΠΈΡΡ Π½Π° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π² 100 ΡΠ°Π· Π±ΠΎΠ»ΡΡΠ΅ ΠΌΠΎΡΠ½ΠΎΡΡΠ΅ΠΉ CPU, ΡΠ΅ΠΌ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ°Ρ ΡΡΠΎΡΠΎΠ½Π°.
ΠΡΠΎΠΌΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΠΏΠΈΡΠ΅ΠΌ β ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡ ΠΏΠΈΡΡΠΌΠ°-ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ Β«Π½Π°ΡΠ°ΡΡ Π·Π°ΡΠΈΡΡΠ½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠΊΡΒ». ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ (ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΡΠΈΠΊ) ΡΠ»ΡΡ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΏΠΎΡΡΠΎΠ²ΠΎΠΌΡ ΡΡΠΈΠΊΡ ΠΏΠΈΡΡΠΌΠΎ Ρ Π°ΡΡΠ°ΡΠ΅ΠΌ. Π ΠΏΠΈΡΡΠΌΠ΅ ΡΠ΅ΠΊΡΡ-ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΡΠ°ΡΡ Π·Π°ΡΠΈΡΡΠ½Π½ΡΠΉ ΠΊΠ°Π½Π°Π» ΡΠ²ΡΠ·ΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠΊΠΈ ΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π²Π»Π°Π΄Π΅Π»ΡΡΠ° ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΈΠΊΠ° (ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°).
ΠΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΠ°ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π΄Π΅Π»Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠΊΠΈ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ-ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΡΡΡ ΡΡΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ (ΡΠΎΠΆΠ΅ ΡΠ΄Π΅Π»Π°Π½Π½ΡΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠΊΠΈ). ΠΠ°Π»Π΅Π΅ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΏΠΈΡΡΠΌΠΎ (Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ) β ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΈΡΠ°ΡΡ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ°Π½Π°Π» ΡΠ²ΡΠ·ΠΈ Π½Π°Π΄ΡΠΆΠ½ΡΠΌ. ΠΠ°Π»Π΅Π΅ Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΏΠΈΡΡΠΌΠΎ β ΠΈ ΡΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΈΡΠ°ΡΡ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ°Π½Π°Π» Π·Π°ΡΠΈΡΡΠ½Π½ΡΠΌ.
ΠΠ»Ρ Π±ΠΎΡΡΠ±Ρ Ρ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΎΠΌ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΏΠΎ Π΄ΠΎΡΠΎΠ³Π΅ β Π½Π°Π΄ΠΎ Π² ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Ρ ΠΎΡΡ-Π±Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ»ΡΡΠΊΠΈ.
Π ΡΠ°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ β ΡΡΠΎΠ±Ρ ΡΡΠΎ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ (Π²ΠΎΠΏΡΠΎΡ Β«Π° ΠΊΡΠΎ Π·Π° ΡΡΠΎ Π·Π°ΠΏΠ»Π°ΡΠΈΡ?Β»):
ΠΠ²Π΅ΡΡΠΈ ΠΏΠΎΡΡΠΎΠ²ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ ΡΡΠΎΠΈΠΌΠΎΡΡΡΡ ΠΎΡ 10$ Π·Π° 3 Π³ΠΎΠ΄Π°. ΠΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ ΡΠΊΠ°Π·Π°ΡΡ Π² dns, ΡΡΠΎ Β«ΠΌΠΎΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π²ΠΎΠ½-ΡΠ°ΠΌΒ». Π Π±ΡΠ΄ΡΡ Π΄Π°Π²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡ Π·Π°ΡΠΈΡΡΠ½Π½ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅. ΠΡΠΈ ΡΡΠΎΠΌ β ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ.
gmail Π½Π°ΠΊΠΎΠ½Π΅Ρ ΠΌΠΎΠ½Π΅ΡΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠ²ΠΎΠΈΡ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠ° 10$ Π² 3 Π³ΠΎΠ΄Π° β ΠΏΡΠ°Π²ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π·Π°ΡΠΈΡΡΠ½Π½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠΊΠΈ.
============= ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ =============
ΠΠ»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ΅ΠΉ ΡΡΠ°ΡΡΠΈ Ρ ΡΠΎΠ±ΠΈΡΠ°Π»ΡΡ Π°ΡΠ΅Π½Π΄ΠΎΠ²Π°ΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ Π½Π° ΠΌΠ΅ΡΡΡ ΠΈ ΠΊΡΠΏΠΈΡΡ Π΄ΠΎΠΌΠ΅Π½ Ρ ssl ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠΌ.
ΠΠΎ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²Π° ΡΠ»ΠΎΠΆΠΈΠ»ΠΈΡΡ ΡΠ°ΠΊ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π·Π°ΡΡΠ½ΡΠ»ΡΡ Π½Π° 2 ΠΌΠ΅ΡΡΡΠ°.
Π Π²ΠΎΡ ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΡΠ½ΠΎΠ²Π° ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ β ΡΠ΅ΡΠΈΠ» ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΡΡ ΠΊΠ°ΠΊ Π΅ΡΡΡ, Π° Π½Π΅ ΡΠΈΡΠΊΠΎΠ²Π°ΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ Π·Π°ΡΡΠ½Π΅ΡΡΡ Π΅ΡΡ Π½Π° Π³ΠΎΠ΄.
ΠΡΠ»ΠΈ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΡΠΈΠΏΠ° Β«Π° Π²ΠΎΡ ΡΡΡ Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎΒ» β ΡΠΎΠ³Π΄Π° Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅ Π½Π°ΠΉΠ΄ΡΡΡΡ ΡΠΈΠ»Ρ ΡΠ°ΠΊΠΈ Π²Π·ΡΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ Ρ Π½ΠΎΠ²ΡΠΌ Π΄ΠΎΠΌΠ΅Π½ΠΎΠΌ ΠΈ Π½ΠΎΠ²ΡΠΌ SSL ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠΌ ΠΈ Π΅ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠΏΠΈΡΠ°ΡΡ ΠΈ Π³Π»Π°Π²Π½ΠΎΠ΅ β Π²ΡΡΠ²ΠΈΡΡ Π²ΡΠ΅ ΡΠΏΡΡΠ΅Π½Π½ΡΠ΅ Π²Π°ΠΆΠ½ΡΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ.
Π’Π°ΠΊΠΆΠ΅ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΠ·ΡΠ²Ρ Π½Π° ΡΠ΅ΠΌΡ ΠΈΠ΄Π΅ΠΈ ΠΏΡΠΎ ΠΏΠΎΡΡΠΎΠ²ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ. ΠΡΠ»ΠΈ ΠΈΠ΄Π΅Ρ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΡΡΡ β ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ Π½Π°ΠΉΡΠΈ ΡΠΈΠ»Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ΅ΡΠ½ΠΎΠ²ΠΈΠΊ Π΄Π»Ρ rfc.
ΠΡΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π±ΠΎΠ»ΡΡΠΈΡ
ΠΊΡΡΠΊΠΎΠ² ΡΡΠ°ΡΡΠΈ β ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΡΡ ΡΡΠ°ΡΡΡ.
ΠΡΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ Π½Π° Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ·ΡΠΊ β ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΡΡ ΡΡΠ°ΡΡΡ.
ΠΠ° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ Ρ ΡΠ°ΠΌ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΠΈ ΠΎΡΡΠ°Π²Π»Ρ ΠΏΠ΅ΡΠ΅ΠΊΡΡΡΡΠ½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com