Π’Π°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π΅ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ ΠΏΠΎΡΠ΅Π½ΡΠΊΠΈ ΡΡΡΠ²ΡΡ.
Postfix + Dovecot. SPF + DKIM + rDNS. Π‘ IPv6.
Π‘ ΡΠΈΡΡΠΎΠ²Π°Π½Π΅ TSL. Π‘ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ - ΡΠ°ΡΡ Ρ ΠΈΡΡΠΈΠ½ΡΠΊΠΈ SSL ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ.
Π‘ Π°Π½ΡΠΈΡΠΏΠ°ΠΌ Π·Π°ΡΠΈΡΠ° ΠΈ Π²ΠΈΡΠΎΠΊΠ° Π°Π½ΡΠΈΡΠΏΠ°ΠΌ ΠΎΡΠ΅Π½ΠΊΠ° Π½Π° Π΄ΡΡΠ³ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΊΠΈ ΡΡΡΠ²ΡΡΠΈ.
Π‘ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
Π‘ OpenVPN, ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Ρ ΠΊΠΎΠΉΡΠΎ Π΅ ΡΡΠ΅Π· IPv4, ΠΈ ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ IPv6.
ΠΠΊΠΎ Π½Π΅ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΈΠ·ΡΡΠ°Π²Π°ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½ΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ ΡΠ°ΠΊΡΠ² ΡΡΡΠ²ΡΡ - ΡΠΎΠ³Π°Π²Π° ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π΅ Π·Π° Π²Π°Ρ.
Π ΡΡΠ°ΡΠΈΡΡΠ° Π»ΠΈΠΏΡΠ²Π°Ρ ΠΎΠΏΠΈΡΠΈ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠ½ΡΡ Π²ΡΠΈΡΠΊΠΈ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ. ΠΠ±ΡΡΠ½Π΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΎΡΠ½Π°ΡΡ Π΄ΠΎ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎ ΠΈΠ»ΠΈ Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ.
ΠΠΎΡΠΈΠ²Π°ΡΠΈΡΡΠ° Π΄Π° Π½Π°ΡΡΡΠΎΡ ΠΏΠΎΡΠ΅Π½ΡΠΊΠΈ ΡΡΡΠ²ΡΡ - ΠΌΠΎΡ ΠΎΡΠ΄Π°Π²Π½Π° ΠΌΠ΅ΡΡΠ°. ΠΠΎΠΆΠ΅ Π΄Π° Π·Π²ΡΡΠΈ Π³Π»ΡΠΏΠ°Π²ΠΎ, Π½ΠΎ ΡΠΏΠΎΡΠ΅Π΄ ΠΌΠ΅Π½, ΡΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π΄Π° ΠΌΠ΅ΡΡΠ°Ρ Π·Π° Π½ΠΎΠ²Π° ΠΊΠΎΠ»Π° ΠΎΡ Π»ΡΠ±ΠΈΠΌΠ°ΡΠ° ΠΌΠ°ΡΠΊΠ°.
ΠΠΎΡΠΈΠ²Π°ΡΠΈΡΡΠ° Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° IPv6 - Π΄Π²Π΅. IT ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΡΡ ΡΡΡΠ±Π²Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π΄Π° ΡΡΠΈ Π½ΠΎΠ²ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π·Π° Π΄Π° ΠΎΡΠ΅Π»Π΅Π΅. ΠΡΠΊΠ°ΠΌ Π΄Π° Π²Π½Π΅ΡΠ° ΡΠ²ΠΎΡ ΡΠΊΡΠΎΠΌΠ΅Π½ ΠΏΡΠΈΠ½ΠΎΡ Π² Π±ΠΎΡΠ±Π°ΡΠ° Ρ ΡΠ΅Π½Π·ΡΡΠ°ΡΠ°.
ΠΠΎΡΠΈΠ²Π°ΡΠΈΡΡΠ° Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° 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`.
ΠΠΌΠ° ΡΡΠΈ Π΄ΠΎΠΌΠ΅ΠΉΠ½Π° `domain1.com`, `domain2.com`, `domain3.com`. ΠΠ° `domain1.com` ΠΈ `domain3.com` Π΅ Π½Π°Π»ΠΈΡΠ΅Π½ SSL ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ.
ΠΠΌΠ° Google Π°ΠΊΠ°ΡΠ½Ρ, ΠΊΠΎΠΉΡΠΎ ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΡΠ²ΡΡΠΆΠ° Ρ ΠΈΠΌΠ΅ΠΉΠ» `vasya.pupkin@domain1.com` (ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΈΠΌΠ΅ΠΉΠ»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π° Gmail).
Π’ΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° ΠΈΠΌΠ΅ΠΉΠ» ΠΊΡΡΠΈΡ `support@domain2.com`, ΠΎΡ ΠΊΠΎΡΡΠΎ ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌ ΠΊΠΎΠΏΠΈΠ΅ Π½Π° ΠΈΠΌΠ΅ΠΉΠ»ΠΈΡΠ΅ Π² Gmail. Π ΡΡΠ΄ΠΊΠΎ Π΄Π° ΠΈΠΌΠ°ΠΌ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΡ Π½Π΅ΡΠΎ ΠΎΡ ΠΈΠΌΠ΅ΡΠΎ Π½Π° `support@domain2.com` ΠΏΡΠ΅Π· ΡΠ΅Π± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
Π’ΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° ΠΈΠΌΠ΅ΠΉΠ» ΠΊΡΡΠΈΡ `ivanov@domain3.com`, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΏΠΎΠ»Π·Π²Π° ΠΠ²Π°Π½ΠΎΠ² ΠΎΡ ΡΠ²ΠΎΡ iPhone.
ΠΠ·ΠΏΡΠ°ΡΠ°Π½ΠΈΡΠ΅ ΠΈΠΌΠ΅ΠΉΠ»ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ Π·Π° Π°Π½ΡΠΈΡΠΏΠ°ΠΌ.
Π’ΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° Π½Π°ΠΉ-Π²ΠΈΡΠΎΠΊΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΡΠΈΡΡΠΎΠ²Π°Π½Π΅, ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½ΠΎ Π² ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΌΡΠ΅ΠΆΠΈ.
Π’ΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° IPv6 ΠΊΠ°ΠΊΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅, ΡΠ°ΠΊΠ° ΠΈ Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠΌΠ΅ΠΉΠ»ΠΈ.
Π’ΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° SpamAssassin, ΠΊΠΎΠΉΡΠΎ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ Π±ΠΈΠ²Π° Π΄Π° ΠΈΠ·ΡΡΠΈΠ²Π° ΠΈΠΌΠ΅ΠΉΠ»ΠΈ. Π Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π° Π΄Π° ΠΏΡΠ°Π²ΠΈ bounce, Π΄Π° Π³ΠΈ ΠΏΡΠΎΠΏΡΡΠΊΠ° ΠΈΠ»ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ° Π² IMAP ΠΏΠ°ΠΏΠΊΠ° βΠ‘ΠΏΠ°ΠΌβ.
Π’ΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ Π°Π²ΡΠΎΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° SpamAssassin: Π°ΠΊΠΎ ΠΏΡΠ΅ΠΌΠ΅ΡΡΡ ΠΈΠΌΠ΅ΠΉΠ» Π² ΠΏΠ°ΠΏΠΊΠ° βΠ‘ΠΏΠ°ΠΌβ β Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠΈ Π½Π° ΡΠΎΠ²Π°; Π°ΠΊΠΎ ΠΏΡΠ΅ΠΌΠ΅ΡΡΡ ΠΈΠΌΠ΅ΠΉΠ» ΠΎΡ ΠΏΠ°ΠΏΠΊΠ° βΠ‘ΠΏΠ°ΠΌβ β Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠΈ Π½Π° ΡΠΎΠ²Π°. Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° SpamAssassin β ΡΡΡΠ±Π²Π° Π΄Π° Π²Π»ΠΈΡΡΡ Π½Π° ΠΏΠΎΠΏΠ°Π΄Π½Π°Π»ΠΈΡΠ΅ ΠΈΠΌΠ΅ΠΉΠ»ΠΈ Π² ΠΏΠ°ΠΏΠΊΠ° βΠ‘ΠΏΠ°ΠΌβ.
PHP ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Ρ ΠΈΠΌΠ΅ΠΉΠ»ΠΈ ΠΎΡ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π²ΡΠ΅ΠΊΠΈ Π΄ΠΎΠΌΠ΅ΠΉΠ½ Π½Π° ΡΠΎΠ·ΠΈ ΡΡΡΠ²ΡΡ.
Π’ΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° OpenVPN ΡΡΠ»ΡΠ³Π°, Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° IPv6 Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ Π½ΡΠΌΠ° IPv6.
ΠΡΡΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΡΡΡΠΎΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈΡΠ΅ ΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡΡΠ°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ IPv6.
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΡΡΡΠΎΠΈΠΌ OpenVPN, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° ΠΏΡΠ΅Π· IPv4 ΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΡΠ°ΡΠΈΡΠ΅Π½ ΡΠ΅Π°Π»Π΅Π½ IPv6 Π°Π΄ΡΠ΅Ρ. Π’ΠΎΠ·ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ΅ ΠΈΠΌΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π²ΡΠΈΡΠΊΠΈ IPv6 ΡΡΠ»ΡΠ³ΠΈ Π½Π° ΡΡΡΠ²Π΅ΡΠ° ΠΈ Π΄ΠΎ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΡΠ΅ΡΡΡΡΠΈ Ρ IPv6 Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ.
ΠΠΎΡΠ»Π΅ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΡΡΡΠΎΠΈΠΌ Postfix Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΈΠΌΠ΅ΠΉΠ»ΠΈ + SPF + DKIM + rDNS ΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ.
ΠΠΎΡΠ»Π΅ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΡΡΡΠΎΠΈΠΌ Dovecot ΠΈ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠ΄ΠΎΠΌΠ΅ΠΉΠ½Π½ΠΎΡΡ.
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΡΡΡΠΎΠΈΠΌ SpamAssassin ΠΈ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΠΌ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ΡΠΎ.
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ Bind.
============= ΠΡΠ»ΡΠΈ-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ =============
ΠΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ Π² β/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Β» β ΡΠΌΠΈΡΡΠ»ΡΡ Π½Π° ΡΠ΅Π·ΠΈ route-rule Π΅, ΡΠ΅ ΡΡΠ°ΡΠΈΠΊΡΡ, Π²Π»ΡΠ·ΡΠ» ΠΏΡΠ΅Π· eno1, ΡΠ΅ ΠΈΠ·Π»ΠΈΠ·Π° ΠΏΡΠ΅Π· Π½Π΅Π³ΠΎ, Π° ΡΡΠ°ΡΠΈΠΊΡΡ, Π²Π»ΡΠ·ΡΠ» ΠΏΡΠ΅Π· eno2, ΡΠ΅ ΠΈΠ·Π»ΠΈΠ·Π° ΠΏΡΠ΅Π· Π½Π΅Π³ΠΎ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΡΡΡΠ²ΡΡΠ½ΠΈΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²ΠΈ ΡΠ΅ Π½Π°ΠΏΡΡΠΊΠ°Ρ ΠΏΡΠ΅Π· eno1.
ip route add default via XX.XX.XX.1 table eno1tΠ‘ ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π΄Π°Π²Π°ΠΌΠ΅, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ Π½Π΅ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΡΡΠ°ΡΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠΏΠ°Π΄Π° ΠΏΠΎΠ΄ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Ρ Β«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 ΠΠ΅Π· ΡΠΎΠ²Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΊΠ°ΡΡΠΎΠΌΠ½ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ Π² ΡΠ°ΠΉΠ»Π° "\/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 ΡΠ»Π΅Π΄ ΡΠ΅ΡΡΠ°ΡΡ β ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΈ Π·Π°ΠΏΠ°Π·ΠΈΡΠ΅ Π½Π° Π½ΡΠΊΠΎΠ΅ ΠΌΡΡΡΠΎ.
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...
# Π’ΠΎΠ²Π° ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° ΠΏΠΎΠ»Π΅ΡΠ°ΡΠ°,
# ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π² ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°.
# ΠΠ΅ ΠΎΡΡΠ°Π²ΡΠΉΡΠ΅ Π½ΠΈΠΊΠΎΠ΅ ΠΎΡ ΡΠ΅Π·ΠΈ ΠΏΠΎΠ»Π΅ΡΠ° ΠΏΡΠ°Π·Π½ΠΎ.
export KEY_COUNTRY="BG"
export KEY_PROVINCE="ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ"
export KEY_CITY="ΠΡΠ°Π΄"
export KEY_ORG="Π‘ΠΎΠ±ΡΡΠ²Π΅Π½ΠΎ"
export KEY_EMAIL="admin@domain1.com"
export KEY_OU="VPN"
# X509 Subject Field
export KEY_NAME="ΡΡΡΠ²ΡΡ"
...Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΡΡΡΠ²ΡΡΠ΅Π½ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ:
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}/${1}.crt
<(echo -e '</cert>n<key>')
${KEY_DIR}/${1}.key
<(echo -e '</key>n<tls-auth>')
${KEY_DIR}/ta.key
<(echo -e '</tls-auth>')
> ${OUTPUT_DIR}/${1}.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).
Π ΠΏΡΠ΅ΡΠΈΠΊΡΡΡ Π΅ ΡΡΡΠ°Π½Π΅Π½, Π½Π΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ° 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
# Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ .domain β ΡΡΠΎ Π·Π°Π΄Π°ΡΠ° MUA.
append_dot_mydomain = no
readme_directory = no
# Π‘ΠΌ. http://www.postfix.org/COMPATIBILITY_README.html -- ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 2 Π΄Π»Ρ
# Π½ΠΎΠ²ΡΡ
ΡΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ.
compatibility_level = 2
# ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ TLS
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
# Π’ΠΈΠΏ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ
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
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-Π°Π΄ΡΠ΅Ρ Π½Π° Π΄ΠΎΠΌΠ΅Π½
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-Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΈ Ρ ΠΈΠ·ΠΏΡΠ°ΡΠ°.
Π‘ΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° http-Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΡΠ΅ΡΠ΅Π½ΠΎ ΡΠ°ΠΌΠΎ ΠΎΡ ΡΠΎΠ·ΠΈ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΈΡΠ΅ΠΆΠ°Π²Π° ΡΠ°ΡΡΠ½ΠΈΡ ΠΊΠ»ΡΡ, ΡΠΎΠ΅ΡΡ ΡΠ°ΠΌΠΎ ΠΎΡ ΡΡΡΠ²ΡΡΠ°, Ρ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π²ΡΡΠ·ΠΊΠ°.
Http-Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΡΡΠ΄ΡΡΠΆΠ° ΠΏΠΎΠ½Π΅ URI. Π’Π°ΠΊΠ° ΡΠ΅, Π°ΠΊΠΎ Π² ΡΡΡΠ°Π½Π°ΡΠ° ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°Ρ Π΄Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Ρ Π΄ΠΎΡΡΡΠΏΠ° Π½Π΅ Π΄ΠΎ ΡΠ΅Π»ΠΈΡ ΡΠ°ΠΉΡ, Π° Π΄ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° ΡΡΡΠ°Π½ΠΈΡΠ° β ΡΠΎ Π·Π° https ΡΠ°ΠΉΡΠΎΠ²Π΅ ΡΠΎΠ²Π° Π΅ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ.Π‘ΡΡΠΏΠΊΠ° β2 β ΡΠΈΡΡΠΎΠ²Π°Π½ ΠΎΡΠ³ΠΎΠ²ΠΎΡ.
Π£Π΅Π± ΡΡΡΠ²ΡΡΡΡ Π΄Π°Π²Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡ, ΠΊΠΎΠΉΡΠΎ Π»Π΅ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΡΠ΅ΡΠ΅Π½ ΠΏΠΎ ΠΏΡΡΡ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΎΡΡΠΎ β Π±ΡΠ°ΡΠ·ΡΡΡΡ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎ Π½ΠΈΠ²ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΡΡΠ°ΡΠ° Π΄Π²ΠΎΠΉΠΊΠ° ΡΠ°ΡΡΠ΅Π½-ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΠΊΠ»ΡΡ Π·Π° Π²ΡΠ΅ΠΊΠΈ https ΡΠ°ΠΉΡ.
Π Π·Π°Π΅Π΄Π½ΠΎ Ρ Π·Π°ΡΠ²ΠΊΠ°ΡΠ° Π·Π° ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡ ΠΊΠ»ΡΡ Π½Π° ΡΠ°ΠΉΡΠ° ΠΈΠ·ΠΏΡΠ°ΡΠ° ΡΠ²ΠΎΡ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΠΊΠ»ΡΡ.
Π£Π΅Π± ΡΡΡΠ²ΡΡΡΡ Π³ΠΎ Π·Π°ΠΏΠΎΠΌΠ½Ρ ΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° http-ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ° ΡΠΈΡΡΠΎΠ²Π° Ρ ΡΠΎΠ·ΠΈ ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΠΊΠ»ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ.
Π‘Π΅Π³Π° http-ΠΎΡΠ³ΠΎΠ²ΠΎΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π΄Π΅ΡΠΈΡΡΠΈΡΠ°Π½ ΡΠ°ΠΌΠΎ ΠΎΡ ΠΏΡΠΈΡΠ΅ΠΆΠ°ΡΠ΅Π»Ρ Π½Π° ΡΠ°ΡΡΠ½ΠΈΡ ΠΊΠ»ΡΡ Π½Π° Π±ΡΠ°ΡΠ·ΡΡΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (ΡΠΎΠ΅ΡΡ ΡΠ°ΠΌΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ).Π‘ΡΡΠΏΠΊΠ° β3 β ΡΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π·Π°ΡΠΈΡΠ΅Π½Π° Π²ΡΡΠ·ΠΊΠ° ΠΏΠΎ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡ ΠΊΠ°Π½Π°Π».
Π ΠΏΡΠΈΠΌΠ΅Ρ β2 ΠΈΠΌΠ° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ β Π½ΠΈΡΠΎ Π½Π΅ ΠΏΡΠ΅ΡΠΈ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠ΅ Π»ΠΈΡΠ° Π΄Π° ΠΏΡΠΈΡ Π²Π°ΡΠ°Ρ http-Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΈ Π΄Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡ ΠΊΠ»ΡΡ.
ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊΡΡ ΠΌΠΎΠΆΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ Π΄Π° Π²ΠΈΠ΄ΠΈ Π²ΡΠΈΡΠΊΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈΡΠ΅-ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ ΡΠ΅ ΡΠΌΠ΅Π½ΠΈ ΠΊΠ°Π½Π°Π»ΡΡ Π·Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ.
Π‘ΠΏΡΠ°Π²ΡΠ½Π΅ΡΠΎ Ρ ΡΠΎΠ²Π° Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΎΡΡΠΎ β Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡΡ ΠΊΠ»ΡΡ Π½Π° Π±ΡΠ°ΡΠ·ΡΡΠ° ΠΊΠ°ΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΡΠΈΡΡΠΎΠ²Π°Π½ΠΎ Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡ ΠΊΠ»ΡΡ Π½Π° ΡΠ΅Π± ΡΡΡΠ²ΡΡΠ°.
Π£Π΅Π± ΡΡΡΠ²ΡΡΡΡ ΡΠΎΠ³Π°Π²Π° Π½Π°ΠΉ-Π½Π°ΠΏΡΠ΅Π΄ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΠΎΡΠ³ΠΎΠ²ΠΎΡ ΠΎΡ ΡΠΈΠΏΠ° βΡΠ²ΠΎΡΡ ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΠΊΠ»ΡΡ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°β ΠΈ ΡΠΈΡΡΠΎΠ²Π° ΡΠΎΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΠΎΠ·ΠΈ ΡΡΡΠΈΡ ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΠΊΠ»ΡΡ.
ΠΡΠ°ΡΠ·ΡΡΡΡ Π³Π»Π΅Π΄Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ° β Π°ΠΊΠΎ Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ βΡΠ²ΠΎΡΡ ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΠΊΠ»ΡΡ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°β β ΡΠΎ ΡΠΎΠ²Π° Π΅ 100% Π³Π°ΡΠ°Π½ΡΠΈΡ, ΡΠ΅ ΡΠΎΠ·ΠΈ ΠΊΠ°Π½Π°Π» Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½.
ΠΠΎΠ»ΠΊΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ Π΅?
Π‘Π°ΠΌΠΎΡΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ°ΠΊΡΠ² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½ ΠΊΠ°Π½Π°Π» Π·Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ ΡΡΠ°Π²Π° ΡΡΡ ΡΠΊΠΎΡΠΎΡΡ ping*2. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ 20ms.
ΠΠ΅Π΄ΠΎΠ±ΡΠΎΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΡ ΡΡΡΠ±Π²Π° ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΠΏΡΠΈΡΠ΅ΠΆΠ°Π²Π° ΡΠ°ΡΡΠ½ΠΈΡ ΠΊΠ»ΡΡ Π½Π° Π΅Π΄Π½Π°ΡΠ° ΡΡΡΠ°Π½Π°. ΠΠ»ΠΈ Π΄Π° ΠΏΠΎΠ΄Π±Π΅ΡΠ΅ ΡΠ°ΡΡΠ½ΠΈΡ ΠΊΠ»ΡΡ Π·Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ.
Π₯Π°ΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΅Π΄ΠΈΠ½ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ ΡΠ°ΡΡΠ΅Π½ ΠΊΠ»ΡΡ ΡΠ΅ ΠΎΡΠ½Π΅ΠΌΠ΅ Π΄Π΅ΡΠ΅ΡΠΈΠ»Π΅ΡΠΈΡ Π½Π° ΡΡΠΏΠ΅ΡΠΊΠΎΠΌΠΏΡΡΡΡ.Π‘ΡΡΠΏΠΊΠ° β4 β ΠΏΡΠ±Π»ΠΈΡΠ½Π° ΠΠ Π½Π° ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅.
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ Π΅, ΡΠ΅ Π² ΡΡΠ»Π°ΡΠ° ΡΠ°Π·ΠΈ ΠΈΡΡΠΎΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ ΡΠΎΠ²Π΅ΠΊ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅Π΄ΠΈ Π½Π° ΠΊΠ°Π½Π°Π»Π° Π·Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΡΡΠ²ΡΡΠ°.
ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ ΠΊΠ°ΡΠΎ ΡΡΡΠ²ΡΡ, Π° ΡΡΡΠ²ΡΡΡΡ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ ΠΊΠ°ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ. Π Π΄Π° ΡΠΈΠΌΡΠ»ΠΈΡΠ° Π΄Π²ΠΎΠΉΠΊΠ° ΠΊΠ»ΡΡΠΎΠ²Π΅ Π² Π΄Π²Π΅ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ.
Π’ΠΎΠ³Π°Π²Π° Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½ΠΈΠΊΡΡ ΡΠ΅ Π²ΠΈΠΆΠ΄Π° ΡΠ΅Π»ΠΈΡ ΡΡΠ°ΡΠΈΠΊ ΠΈ ΡΠ΅ ΠΈΠΌΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° "ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°" ΡΡΠ°ΡΠΈΠΊΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π°Π΄ΡΠ΅ΡΠ°, Π½Π° ΠΊΠΎΠΉΡΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°Ρ ΠΏΠ°ΡΠΈ, Π΄Π° ΠΊΠΎΠΏΠΈΡΠ° ΠΏΠ°ΡΠΎΠ»Π°ΡΠ° ΠΎΡ ΠΎΠ½Π»Π°ΠΉΠ½ Π±Π°Π½ΠΊΠ°ΡΠ° ΠΈΠ»ΠΈ Π΄Π° Π±Π»ΠΎΠΊΠΈΡΠ° "Π½Π΅ΡΠ³ΠΎΠ΄Π½ΠΎΡΠΎ" ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅.
ΠΠ° Π±ΠΎΡΠ±Π° Ρ ΡΠ°ΠΊΠΈΠ²Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ Π»ΠΈΡΠ° Π±Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½Π° ΠΏΡΠ±Π»ΠΈΡΠ½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ Π·Π° Π²ΡΠ΅ΠΊΠΈ https ΡΠ°ΠΉΡ.
ΠΡΠ΅ΠΊΠΈ Π±ΡΠ°ΡΠ·ΡΡ "Π·Π½Π°Π΅" Π·Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΊΠΎΠ»ΠΎ 200 ΡΠ°ΠΊΠΈΠ²Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. Π’ΠΎΠ²Π° Π΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π°Π΄Π°Π΄Π΅Π½ΠΎ Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ Π±ΡΠ°ΡΠ·ΡΡ.
"ΠΠ½Π°Π½ΠΈΠ΅ΡΠΎ" Π΅ ΠΏΠΎΠ΄ΡΠΈΠ³ΡΡΠ΅Π½ΠΎ Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡ ΠΊΠ»ΡΡ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ. Π’ΠΎΠ΅ΡΡ, ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΡΠ΅Π½ΡΡΡ Π·Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°Π»ΡΠΈΡΠΈΡΠΈΡΠ°Π½ΠΎ.Π‘Π΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ SSL Π·Π° https.
ΠΠΊΠΎ ΡΠ΅ Π·Π°ΠΌΠΈΡΠ»ΠΈΡΠ΅, ΡΠ΅ ΡΡΠ°Π½Π΅ ΡΡΠ½ΠΎ ΠΊΠ°ΠΊ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈΡΠ΅ ΡΠ»ΡΠΆΠ±ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΡΠΎΠ±ΠΈΡΡ ΡΠ°Π·ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ. ΠΠΎ ΡΠΎΠ²Π° ΡΠ΅ ΠΈΠΌ ΡΡΡΡΠ²Π° ΡΡΠ΄ΠΎΠ²ΠΈΡΠ½ΠΈ ΡΡΠΈΠ»ΠΈΡ.
Π Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈΡΠ΅, ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ ΠΠΠ ΠΈΠ»ΠΈ Π¦Π Π£, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΅ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ±ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° Π·Π°ΡΠΈΡΠ°, Π΄ΠΎΡΠΈ Π·Π° VIP.ΠΡΠ΅ ΡΠ΅ Π΄ΠΎΠ±Π°Π²Ρ Π·Π° ssh Π²ΡΡΠ·ΠΊΠΈΡΠ΅. Π’Π°ΠΌ Π½ΡΠΌΠ° ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅, ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ. ΠΡΠΏΡΠΎΡΡΡ ΡΠ΅ ΡΠ΅ΡΠ°Π²Π° ΠΏΠΎ Π΄Π²Π° Π½Π°ΡΠΈΠ½Π°.
ΠΠ°ΡΠΈΠ°Π½Ρ ssh Ρ ΠΏΠ°ΡΠΎΠ»Π°:
ΠΡΠΈ ΠΏΡΡΠ²ΠΎΡΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ssh ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈ, ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Π½ΠΎΠ² ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΠΊΠ»ΡΡ ΠΎΡ ssh ΡΡΡΠ²ΡΡΠ°.
Π ΠΏΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΈ Π²ΡΡΠ·ΠΊΠΈ, Π°ΠΊΠΎ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ "Π½ΠΎΠ² ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΠΊΠ»ΡΡ ΠΎΡ ssh ΡΡΡΠ²ΡΡΠ°" - ΡΠΎΠ²Π° ΡΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°Ρ Π΄Π° Π²ΠΈ ΠΏΠΎΠ΄ΡΠ»ΡΡΠ²Π°Ρ.
ΠΠ»ΠΈ ΠΏΡΠΈ ΠΏΡΡΠ²ΠΎΡΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΡΡΠ΅ Π±ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΡΠ»ΡΡΠ²Π°Π½ΠΈ, Π° ΡΠ΅Π³Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠΈΡΠ°ΡΠ΅ ΡΡΡ ΡΡΡΠ²ΡΡΠ° Π±Π΅Π· ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΡΠΈ.
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½ΠΎ, ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ°ΠΊΡΠ°, ΡΠ΅ ΠΏΠΎΠ΄ΡΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π΅ Π»Π΅ΡΠ½ΠΎ, Π±ΡΡΠ·ΠΎ ΠΈ Π±Π΅Π· ΡΡΠΈΠ»ΠΈΡ, ΡΠ°Π·ΠΈ Π°ΡΠ°ΠΊΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°ΠΌΠΎ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΡΠ»ΡΡΠ°ΠΈ Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ.ΠΠ°ΡΠΈΠ°Π½Ρ ssh Ρ ΠΊΠ»ΡΡ:
ΠΠ·ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ»Π°ΡΠΊΠ°, Π·Π°ΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π½Π° Π½Π΅Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΈΡ ΠΊΠ»ΡΡ Π·Π° ssh ΡΡΡΠ²ΡΡΠ° (Π·Π° ΡΠΎΠ²Π° ΠΈΠΌΠ° ΡΠ΅ΡΠΌΠΈΠ½ΠΈ ΠΈ ΠΊΡΠΏ Π½ΡΠ°Π½ΡΠΈ, Π½ΠΎ ΠΏΠΈΡΠ° Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½ΠΎ, Π° Π½Π΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅).
ΠΡΠ±Π»ΠΈΡΠ½ΠΈΡΡ ΠΊΠ»ΡΡ ΠΎΡΡΠ°Π²ΡΠΌΠ΅ Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ°, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ssh ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΠΈ ΡΡΡΠΎ Π³ΠΎ Π΄ΡΡΠΆΠΈΠΌ Π² ΡΠ°ΠΉΠ½Π°.
ΠΡΠΈΠ½Π°ΡΡΠΌΠ΅ ΡΠ»Π°ΡΠΊΠ°ΡΠ° Π΄ΠΎ ΡΡΡΠ²ΡΡΠ°, Π²ΠΊΠ»ΡΡΠ²Π°ΠΌΠ΅ Ρ, ΠΊΠΎΠΏΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΈΡ ΠΊΠ»ΡΡ, Π° ΡΠ»Π°ΡΠΊΠ°ΡΠ° ΠΈΠ·Π³Π°ΡΡΠΌΠ΅ ΠΈ ΡΠ°Π·ΠΏΡΡΡΠΊΠ²Π°ΠΌΠ΅ ΠΏΠ΅ΠΏΠ΅Π»ΡΠ° ΠΏΠΎ Π²ΡΡΡΡΠ° (ΠΈΠ»ΠΈ ΠΏΠΎΠ½Π΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°ΠΌΠ΅ Ρ Π·Π°ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π½ΡΠ»ΠΈ).
Π ΡΠΎΠ²Π° Π΅ Π²ΡΠΈΡΠΊΠΎ β ΡΠ»Π΅Π΄ ΡΠ°ΠΊΠ°Π²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ Ρ Π°ΠΊΠ½Π΅ ΡΠ°ΠΊΠΎΠ²Π° ssh Π²ΡΡΠ·ΠΊΠ°. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΠ»Π΅Π΄ 10 Π³ΠΎΠ΄ΠΈΠ½ΠΈ Π½Π° ΡΡΠΏΠ΅ΡΠΊΠΎΠΌΠΏΡΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π³Π»Π΅Π΄Π° ΡΡΠ°ΡΠΈΠΊΠ° β Π½ΠΎ ΡΠΎΠ²Π° Π΅ ΠΎΡΠ΄Π΅Π»Π½Π° ΠΈΡΡΠΎΡΠΈΡ.ΠΠ·Π²ΠΈΠ½ΡΠ²Π°ΠΉΡΠ΅ Π·Π° ΠΎΡΡΡΠΎΠΏΠΈΠΊΠ°.
Π ΡΠ°ΠΊΠ°, ΡΠ΅Π³Π° ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ΠΎΡΠΈΡΡΠ° Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½Π°, ΡΠ΅ ΡΠ°Π·ΠΊΠ°ΠΆΠ° Π·Π° ΠΏΠΎΡΠΎΠΊΠ° Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° 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 = +ΠΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΠ° Π½Π΅ Π·Π½Π°ΡΡ, Π½ΠΎ ΡΠΎΠ²Π° Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ» Π·Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠΎΡΠΈΡΠ΅, ΠΈ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΡ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΊΠΈ ΡΡΡΠ²ΡΡΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΏΠΎΡΠ΅Π½ΡΠΊΠ° ΠΊΡΡΠΈΡ Β«username@gmail.comΒ», ΠΎΠΏΠΈΡΠ°ΠΉΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈΡΠ΅ Π½Π° Β«username+spam@gmail.comΒ» β Π²ΠΈΠΆΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΡΠ°Π½Π΅.
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.
Π ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π·Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½, ΠΏΠΎΡΠ΅Π½ΡΠΊΠ° ΠΊΡΡΠΈΡ, Π°Π»ΠΈΠ°Ρ β Π²ΠΈΠΆΡΠ΅ Π² ΠΠ.
/etc/postfix/mysql-virtual-mailbox-domains.cf
ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» = usermail
ΠΏΠ°ΡΠΎΠ»Π° = mailpassword
Ρ
ΠΎΡΡΠΎΠ²Π΅ = 127.0.0.1
ΠΈΠΌΠ΅ Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ = servermail
Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ = SELECT 1 FROM virtual_domains WHERE name='%s'/etc/postfix/mysql-virtual-mailbox-maps.cf
ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» = usermail
ΠΏΠ°ΡΠΎΠ»Π° = mailpassword
Ρ
ΠΎΡΡΠΎΠ²Π΅ = 127.0.0.1
ΠΈΠΌΠ΅ Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ = servermail
Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ = SELECT 1 FROM virtual_users WHERE email='%s'/etc/postfix/mysql-virtual-alias-maps.cf
ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» = usermail
ΠΏΠ°ΡΠΎΠ»Π° = mailpassword
Ρ
ΠΎΡΡΠΎΠ²Π΅ = 127.0.0.1
ΠΈΠΌΠ΅ Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ = servermail
Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ = 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β:
/^www-domain1@domain1.com$/ domain1:
/^www-domain2@domain1.com$/ domain2:
/^www-domain3@domain1.com$/ domain3:
/@domain1.com$/ domain1:
/@domain2.com$/ domain2:
/@domain3.com$/ domain3:ΠΠ»ΡΠ²ΠΎ β ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ. ΠΠ΄ΡΡΠ½ΠΎ β Π΅ΡΠΈΠΊΠ΅Ρ, Ρ ΠΊΠΎΠΉΡΠΎ ΠΈΠΌΠ΅ΠΉΠ»ΡΡ Π΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½.
Postfix, Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ Π΅ΡΠΈΠΊΠ΅ΡΠ°, ΡΠ΅ Π²Π·Π΅ΠΌΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΎΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈΡ ΠΈΠΌΠ΅ΠΉΠ».ΠΠ°ΠΊ ΡΠΎΡΠ½ΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ postfix Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΈΠΌΠ΅ΠΉΠ» β ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² βmaster.cfβ.
Π Π΅Π΄ΠΎΠ²Π΅ΡΠ΅ 4, 5, 6 β ΡΠ΅ ΡΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ. ΠΡ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠ°ΠΊΡΠ² Π΄ΠΎΠΌΠ΅ΠΉΠ½ ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ ΠΈΠΌΠ΅ΠΉΠ» β ΡΠ°ΠΊΡΠ² Π΅ΡΠΈΠΊΠ΅Ρ ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠΌΠ΅.
ΠΠΎ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π² php ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ Π² ΡΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄ Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎΠ»Π΅ΡΠΎ βfromβ. Π’ΠΎΠ³Π°Π²Π° Π½Π° ΠΏΠΎΠΌΠΎΡ ΠΈΠ΄Π²Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΈΠΌΠ΅.Π‘ΡΠ°ΡΠΈΡΡΠ° ΠΈ ΡΠ°ΠΊΠ° Π΅ ΠΎΠ±ΡΠΈΡΠ½Π° β Π½Π΅ ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΡΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½ΡΠ²Π°ΠΌ ΠΊΡΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π½Π° nginx+fpm.
ΠΠ°ΠΊΡΠ°ΡΠΊΠΎ β Π·Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ°ΠΉΡ Π·Π°Π΄Π°Π²Π°ΠΌΠ΅ ΡΠ²ΠΎΠΉ linux-ΠΌΡΡΠΊΠ° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊ. Π ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ, ΡΠ²ΠΎΠΉ fpm-ΠΏΡΠ».
Fpm-ΠΏΡΠ»ΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²ΡΡΠΊΠ° Π²Π΅ΡΡΠΈΡ Π½Π° php (ΡΠΎΠ²Π° Π΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ Π½Π° Π΅Π΄ΠΈΠ½ ΡΡΡΠ²ΡΡ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π·Π° ΡΡΡΠ΅Π΄Π½ΠΈΡΠ΅ ΡΠ°ΠΉΡΠΎΠ²Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°Π·Π»ΠΈΡΠ½Π° Π²Π΅ΡΡΠΈΡ Π½Π° php ΠΈ Π΄ΠΎΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ php.ini).
Π’Π°ΠΊΠ° ΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈΡΡ linux-ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» βwww-domain2β ΠΈΠΌΠ° ΡΠ°ΠΉΡ domain2.com. ΠΠ° ΡΠΎΠ·ΠΈ ΡΠ°ΠΉΡ ΠΈΠΌΠ° ΠΊΠΎΠ΄ Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΈΠΌΠ΅ΠΉΠ»ΠΈ Π±Π΅Π· ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»Π΅ΡΠΎ ΠΎΡ.
Π’Π°ΠΊΠ° ΡΠ΅ Π΄ΠΎΡΠΈ Π² ΡΠ°ΠΊΡΠ² ΡΠ»ΡΡΠ°ΠΉ ΠΈΠΌΠ΅ΠΉΠ»ΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·Π»ΠΈΠ·Π°Ρ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈ Π½ΠΈΠΊΠΎΠ³Π° Π½ΡΠΌΠ° Π΄Π° ΠΏΠΎΠΏΠ°Π΄Π½Π°Ρ Π² ΡΠΏΠ°ΠΌ.
ΠΠΎΡΡ β/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}Π’ΠΎΠ²Π° ΡΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅, ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΡΡ 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 ΠΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΠΌΠ΅ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Ρ ΠΏΠΎΡΠ΅Π½ΡΠΊΠΈΡ ΡΡΡΠ²ΡΡ ΠΏΡΠ΅Π· ΠΏΠΎΡΡ 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 Π½Π° Π°Π΄ΡΠ΅ΡΠ°, ΠΎΡ ΠΊΠΎΠΉΡΠΎ Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ ΠΈΠΌΠ΅ΠΉΠ»ΡΡ.ΠΠΊΠΎ 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 ΠΏΠ»ΡΠ³ΠΈΠ½. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π΅ Π·Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° spamassassin ΠΏΡΠΈ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π²/ΠΎΡ ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Β«SpamΒ».
Π€Π°ΠΉΠ» Β«/etc/dovecot/conf.d/20-pop3.confΒ»
protocol pop3 {
}ΠΡΠΎΡΡΠΎ ΡΠ°ΠΊΡΠ² ΡΠ°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°.
Π€Π°ΠΉΠ» Β«/etc/dovecot/conf.d/20-lmtp.confΒ»
ΠΏΡΠΎΡΠΎΠΊΠΎΠ» lmtp {
mail_plugins = $mail_plugins sieve
postmaster_address = admin@domain1.com
}ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ lmtp.
Π€Π°ΠΉΠ» "\/etc\/dovecot\/conf.d\/90-antispam.conf"
ΠΏΠ»Π°Π³ΠΈΠ½ {
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
}ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ spamassassin Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° Π²\/ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ Β«SpamΒ».
Π€Π°ΠΉΠ» "\/etc\/dovecot\/conf.d\/90-sieve.conf"
ΠΏΠ»Π°Π³ΠΈΠ½ {
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
