Debian + Postfix + Dovecot + Multidomain + SSL + IPv6 + OpenVPN + Multi-interfaces + SpamAssassin-learn + Bind

Данная ΡΡ‚Π°Ρ‚ΡŒΡ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ соврСмСнный ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ сСрвСр.
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Β» ΠΏΡ€Π°Π²ΠΈΠ»Π°: habr.com/post/108690

============= 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

Π­Ρ‚ΠΎ Π½Π° Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Ρ β€” я Π²Ρ‹Π±Ρ€Π°Π» Ρ‚Π°ΠΊΠΎΠΉ способ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ соСдинСния.

Π‘ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎ настройку OpenVPN IPv4.

Π‘ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎ настройку OpenVPN IPv6.

============= 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Β» β€” Π° это для удобства чтСния Π»ΠΎΠ³ΠΎΠ².

ΠŸΠΎΠΊΡƒΠΏΠ°Ρ‚ΡŒ сСртификаты Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Ρ‚ΡƒΡ‚.

Настройка связки postfix+dovecot Ρ‚ΡƒΡ‚.

Настройка SPF.

============= 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 ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»ΠΈΡΡŒ Ρ€Π°Π½Π΅Π΅ ΠΏΠΎ ΡΡ‚Π°Ρ‚ΡŒΠ΅.

ΠžΠ±Ρ‰Π°Ρ настройка Β«spamassassinΒ».
ΠŸΡ€ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… Π‘ΠΏΠ°ΠΌ-писСм Π² IMAP ΠΏΠ°ΠΏΠΊΡƒ Β«SpamΒ».
ΠŸΡ€ΠΎ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ связку Dovecot + SpamAssassin.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΊ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΡŽ тСория обучСния spamassasin ΠΏΡ€ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ писСм Π² imap ΠΏΠ°ΠΏΠΊΠ°Ρ… (ΠΈ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ).

============= ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ сообщСству =============

Π•Ρ‰Ρ‘ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Π·Π°ΠΊΠΈΠ½ΡƒΡ‚ΡŒ идСю Π² сообщСство ΠΏΡ€ΠΎ Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ защищённости пСрСсылаСмых писСм. Π Π°Π· ΡƒΠΆ я Ρ‚Π°ΠΊ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ погрузился Π² Ρ‚Π΅ΠΌΡƒ ΠΏΠΎΡ‡Ρ‚Ρ‹.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ Π±Ρ‹ Ρƒ сСбя Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ (outlook, thunderbird, browser-plugin, …) ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρƒ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ. ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ β€” ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² DNS. ΠŸΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ β€” ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅. ΠŸΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ сСрвСра Π±Ρ‹ ΡƒΠΌΠ΅Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ адрСсату.

И для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ спама ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΏΠΈΡΡŒΠΌΠ°Ρ… (Π΄Π°, ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ сСрвСр ΠΆΠΈ Π½Π΅ смоТСт ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚) β€” Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ввСсти 3 ΠΏΡ€Π°Π²ΠΈΠ»Π°:

  1. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ настоящая подпись DKIM, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ SPF, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ rDNS.
  2. НСйронная ΡΠ΅Ρ‚ΡŒ Π½Π° Ρ‚Π΅ΠΌΡƒ обучСния антиспама + Π‘Π” ΠΊ Π½Π΅ΠΉ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.
  3. Алгоритм ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ сторона Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π² 100 Ρ€Π°Π· большС мощностСй CPU, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ сторона.

ΠšΡ€ΠΎΠΌΠ΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… писСм β€” Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ стандарт письма-прСдлоТСния Β«Π½Π°Ρ‡Π°Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½ΡƒΡŽ пСрСписку». Один ΠΈΠ· ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ящик) ΡˆΠ»Ρ‘Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠΌΡƒ ящику письмо с Π°Ρ‚Ρ‚Π°Ρ‡Π΅ΠΌ. Π’ письмС тСкст-ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π» связи для пСрСписки ΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ ящика (ΠΏΡ€ΠΈ этом ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°).

МоТно Π΄Π°ΠΆΠ΅ ΠΏΠ°Ρ€Ρƒ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π΄Π΅Π»Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ пСрСписки. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ-ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ это ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ свой ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ (Ρ‚ΠΎΠΆΠ΅ сдСланный ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для Π΄Π°Π½Π½ΠΎΠΉ пСрСписки). Π”Π°Π»Π΅Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ отправляСт слуТСбноС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠ΅ письмо (Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ) β€” ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сформированный ΠΊΠ°Π½Π°Π» связи Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΌ. Π”Π°Π»Π΅Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ отправляСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠ΅ письмо β€” ΠΈ Ρ‚ΠΎΠ³Π΄Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сформированный ΠΊΠ°Π½Π°Π» Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹ΠΌ.

Для Π±ΠΎΡ€ΡŒΠ±Ρ‹ с ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΏΠΎ Π΄ΠΎΡ€ΠΎΠ³Π΅ β€” Π½Π°Π΄ΠΎ Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π΅ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ хотя-Π±Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„Π»ΡΡˆΠΊΠΈ.

И самоС Π³Π»Π°Π²Π½ΠΎΠ΅ β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ это всё Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ (вопрос Β«Π° ΠΊΡ‚ΠΎ Π·Π° это Π·Π°ΠΏΠ»Π°Ρ‚ΠΈΡ‚?Β»):
ВвСсти ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ сСртификаты ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ 10$ Π·Π° 3 Π³ΠΎΠ΄Π°. ΠšΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅Π»ΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² dns, Ρ‡Ρ‚ΠΎ Β«ΠΌΠΎΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ находятся Π²ΠΎΠ½-Ρ‚Π°ΠΌΒ». И Π±ΡƒΠ΄ΡƒΡ‚ Π΄Π°Π²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½ΠΎΠ΅ соСдинСниС. ΠŸΡ€ΠΈ этом β€” ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ соСдинСния бСсплатно.
gmail Π½Π°ΠΊΠΎΠ½Π΅Ρ† ΠΌΠΎΠ½Π΅Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ своих ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π—Π° 10$ Π² 3 Π³ΠΎΠ΄Π° β€” ΠΏΡ€Π°Π²ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ пСрСписки.

============= Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ =============

Для тСстирования всСй ΡΡ‚Π°Ρ‚ΡŒΠΈ я собирался Π°Ρ€Π΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр Π½Π° мСсяц ΠΈ ΠΊΡƒΠΏΠΈΡ‚ΡŒ Π΄ΠΎΠΌΠ΅Π½ с ssl сСртификатом.

Но ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π° слоТились Ρ‚Π°ΠΊ этот вопрос затянулся Π½Π° 2 мСсяца.
И Π²ΠΎΡ‚ ΠΊΠΎΠ³Π΄Π° появилось снова свободноС врСмя β€” Ρ€Π΅ΡˆΠΈΠ» ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ, Π° Π½Π΅ Ρ€ΠΈΡΠΊΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ публикация затянСтся Π΅Ρ‰Ρ‘ Π½Π° Π³ΠΎΠ΄.

Если Π±ΡƒΠ΄Π΅Ρ‚ достаточно ΠΌΠ½ΠΎΠ³ΠΎ вопросов Ρ‚ΠΈΠΏΠ° Β«Π° Π²ΠΎΡ‚ Ρ‚ΡƒΡ‚ Π½Π΅ достаточно ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описано» β€” Ρ‚ΠΎΠ³Π΄Π° Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅ найдутся силы Ρ‚Π°ΠΊΠΈ Π²Π·ΡΡ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр с Π½ΠΎΠ²Ρ‹ΠΌ Π΄ΠΎΠΌΠ΅Π½ΠΎΠΌ ΠΈ Π½ΠΎΠ²Ρ‹ΠΌ SSL сСртификатом ΠΈ Π΅Ρ‰Ρ‘ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ Π³Π»Π°Π²Π½ΠΎΠ΅ β€” Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ всС ΡƒΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ.

Π’Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π·Ρ‹Π²Ρ‹ Π½Π° Ρ‚Π΅ΠΌΡƒ ΠΈΠ΄Π΅ΠΈ ΠΏΡ€ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ сСртификаты. Если идСя понравится β€” ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ Π½Π°ΠΉΡ‚ΠΈ силы Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊ для rfc.

ΠŸΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… кусков ΡΡ‚Π°Ρ‚ΡŒΠΈ β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ссылку Π½Π° эту ΡΡ‚Π°Ρ‚ΡŒΡŽ.
ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ Π½Π° любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ язык β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ссылку Π½Π° эту ΡΡ‚Π°Ρ‚ΡŒΡŽ.
На английский язык я сам ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ пСрСвСсти ΠΈ ΠΎΡΡ‚Π°Π²Π»ΡŽ пСрСкрёстныС ссылки.


Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com