เชกเซ‡เชฌเชฟเชฏเชจ + เชชเซ‹เชธเซเชŸเชซเชฟเช•เซเชธ + เชกเซ‹เชตเช•เซ‹เชŸ + เชฎเชฒเซเชŸเชฟเชกเซ‹เชฎเซ‡เชจ + SSL + IPv6 + OpenVPN + เชฎเชฒเซเชŸเซ€-เช‡เชจเซเชŸเชฐเชซเซ‡เชธ + เชธเซเชชเชพเชฎ เชเชธเซเชธเชพเชธเชฟเชจ-เชฒเชฐเซเชจ + เชฌเชพเช‡เชจเซเชก

เช† เชฒเซ‡เช– เช†เชงเซเชจเชฟเช• เชฎเซ‡เช‡เชฒ เชธเชฐเซเชตเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเซ‡เชŸ เช•เชฐเชตเซเช‚ เชคเซ‡ เชตเชฟเชถเซ‡ เช›เซ‡.
เชชเซ‹เชธเซเชŸเชซเชฟเช•เซเชธ + เชกเซ‹เชตเช•เซ‹เชŸ. SPF + DKIM + rDNS. IPv6 เชธเชพเชฅเซ‡.
TSL เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจ เชธเชพเชฅเซ‡. เชฌเชนเซเชตเชฟเชง เชกเซ‹เชฎเซ‡เชจเซเชธ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชฅเชจ เชธเชพเชฅเซ‡ - เชตเชพเชธเซเชคเชตเชฟเช• SSL เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชธเชพเชฅเซ‡เชจเซ‹ เชญเชพเช—.
เชเชจเซเชŸเชฟเชธเซเชชเชพเชฎ เชชเซเชฐเซ‹เชŸเซ‡เช•เซเชถเชจ เช…เชจเซ‡ เช…เชจเซเชฏ เชฎเซ‡เช‡เชฒ เชธเชฐเซเชตเชฐเซเชธ เชคเชฐเชซเชฅเซ€ เช‰เชšเซเชš เชเชจเซเชŸเชฟเชธเซเชชเชพเชฎ เชฐเซ‡เชŸเชฟเช‚เช— เชธเชพเชฅเซ‡.
เชฌเชนเซเชตเชฟเชง เชญเซŒเชคเชฟเช• เช‡เชจเซเชŸเชฐเชซเซ‡เชธเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡.
OpenVPN เชธเชพเชฅเซ‡, เชœเซ‡เชจเซเช‚ เช•เชจเซ‡เช•เซเชถเชจ IPv4 เชฎเชพเชฐเชซเชคเซ‡ เช›เซ‡, เช…เชจเซ‡ เชœเซ‡ IPv6 เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡.

เชœเซ‹ เชคเชฎเซ‡ เช† เชฌเชงเซ€ เชคเช•เชจเซ€เช•เซ‹ เชถเซ€เช–เชตเชพ เชฎเชพเช‚เช—เชคเชพ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช†เชตเชพ เชธเชฐเซเชตเชฐ เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹, เชคเซ‹ เช† เชฒเซ‡เช– เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช›เซ‡.

เชฒเซ‡เช– เชฆเชฐเซ‡เช• เชตเชฟเช—เชคเชตเชพเชฐ เชธเชฎเชœเชพเชตเชตเชพเชจเซ‹ เช•เซ‹เชˆ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เชธเชฎเชœเซ‚เชคเซ€ เช เช›เซ‡ เช•เซ‡ เชœเซ‡ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชคเชฐเซ€เช•เซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เชจเชฅเซ€ เช…เชฅเชตเชพ เช—เซเชฐเชพเชนเช•เชจเชพ เชฆเซƒเชทเซเชŸเชฟเช•เซ‹เชฃเชฅเซ€ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡.

เชฎเซ‡เช‡เชฒ เชธเชฐเซเชตเชฐ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชชเซเชฐเซ‡เชฐเชฃเชพ เช เชฎเชพเชฐเซเช‚ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏเชฅเซ€ เชธเซเชตเชชเซเชจ เชนเชคเซเช‚. เช† เชฎเซ‚เชฐเซเช– เชฒเชพเช—เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ IMHO, เชคเชฎเชพเชฐเซ€ เชฎเชจเชชเชธเช‚เชฆ เชฌเซเชฐเชพเชจเซเชกเชจเซ€ เชจเชตเซ€ เช•เชพเชฐเชจเซเช‚ เชธเซเชตเชชเซเชจ เชœเซ‹เชตเชพ เช•เชฐเชคเชพเช‚ เชคเซ‡ เช˜เชฃเซเช‚ เชธเชพเชฐเซเช‚ เช›เซ‡.

IPv6 เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฌเซ‡ เชชเซเชฐเซ‡เชฐเชฃเชพ เช›เซ‡. IT เชจเชฟเชทเซเชฃเชพเชคเชจเซ‡ เชŸเช•เซ€ เชฐเชนเซ‡เชตเชพ เชฎเชพเชŸเซ‡ เชธเชคเชค เชจเชตเซ€ เชคเช•เชจเซ€เช•เซ‹ เชถเซ€เช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชนเซเช‚ เชธเซ‡เชจเซเชธเชฐเชถเซ€เชช เชธเชพเชฎเซ‡เชจเซ€ เชฒเชกเชพเชˆเชฎเชพเช‚ เชฎเชพเชฐเซเช‚ เชธเชพเชงเชพเชฐเชฃ เชฏเซ‹เช—เชฆเชพเชจ เช†เชชเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚.

OpenVPN เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชชเซเชฐเซ‡เชฐเชฃเชพ เชฎเชพเชคเซเชฐ IPv6 เชจเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชฎเชถเซ€เชจ เชชเชฐ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช›เซ‡.
เช˜เชฃเชพ เชญเซŒเชคเชฟเช• เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชชเซเชฐเซ‡เชฐเชฃเชพ เช เช›เซ‡ เช•เซ‡ เชฎเชพเชฐเชพ เชธเชฐเซเชตเชฐ เชชเชฐ เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชเช• เชˆเชจเซเชŸเชฐเชซเซ‡เชธ "เชงเซ€เชฎเซ‹ เชชเชฐเช‚เชคเซ เช…เชฎเชฐเซเชฏเชพเชฆเชฟเชค" เช…เชจเซ‡ เชฌเซ€เชœเซเช‚ "เชเชกเชชเซ€ เชชเชฐเช‚เชคเซ เชŸเซ‡เชฐเชฟเชซ เชธเชพเชฅเซ‡" เช›เซ‡.

เชฌเชพเช‡เชจเซเชก เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชชเซเชฐเซ‡เชฐเชฃเชพ เช เช›เซ‡ เช•เซ‡ เชฎเชพเชฐเซเช‚ ISP เช…เชธเซเชฅเชฟเชฐ DNS เชธเชฐเซเชตเชฐ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ google เชชเชฃ เช•เซเชฏเชพเชฐเซ‡เช• เชจเชฟเชทเซเชซเชณ เชœเชพเชฏ เช›เซ‡. เชฎเชจเซ‡ เชตเซเชฏเช•เซเชคเชฟเช—เชค เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชธเซเชฅเชฟเชฐ DNS เชธเชฐเซเชตเชฐ เชœเซ‹เชˆเช เช›เซ‡.

เชฒเซ‡เช– เชฒเช–เชตเชพเชจเซ€ เชชเซเชฐเซ‡เชฐเชฃเชพ - เชฎเซ‡เช‚ 10 เชฎเชนเชฟเชจเชพ เชชเชนเซ‡เชฒเชพ เชเช• เชกเซเชฐเชพเชซเซเชŸ เชฒเช–เซเชฏเซ‹ เชนเชคเซ‹, เช…เชจเซ‡ เชฎเซ‡เช‚ เชคเซ‡เชจเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชฌเซ‡ เชตเชพเชฐ เชœเซ‹เชฏเซ‹ เช›เซ‡. เชœเซ‹ เชฒเซ‡เช–เช•เชจเซ‡ เชจเชฟเชฏเชฎเชฟเชคเชชเชฃเซ‡ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เชคเซ‹ เชชเชฃ, เช…เชจเซเชฏเชจเซ‡ เชชเชฃ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡ เชคเซ‡เชตเซ€ เช‰เชšเซเชš เชธเช‚เชญเชพเชตเชจเชพ เช›เซ‡.

เชฎเซ‡เช‡เชฒ เชธเชฐเซเชตเชฐ เชฎเชพเชŸเซ‡ เช•เซ‹เชˆ เชธเชพเชฐเซเชตเชคเซเชฐเชฟเช• เช‰เช•เซ‡เชฒ เชจเชฅเซ€. เชชเชฃ เชนเซเช‚ เช•เช‚เชˆเช• เชฒเช–เชตเชพเชจเซ‹ เชชเซเชฐเชฏเชคเซเชจ เช•เชฐเซ€เชถ "เช† เช•เชฐเซ‹ เช…เชจเซ‡ เชชเช›เซ€, เชœเซเชฏเชพเชฐเซ‡ เชฌเชงเซเช‚ เชœเซ‹เชˆเช เชคเซ‡ เชชเซเชฐเชฎเชพเชฃเซ‡ เช•เชพเชฎ เช•เชฐเซ‡, เชตเชงเชพเชฐเชพเชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เชซเซ‡เช‚เช•เซ€ เชฆเซ‹."

เช•เช‚เชชเชจเซ€ tech.ru เชชเชพเชธเซ‡ Colocation เชธเชฐเซเชตเชฐ เช›เซ‡. OVH, Hetzner, AWS เชธเชพเชฅเซ‡ เชธเชฐเช–เชพเชฎเชฃเซ€ เช•เชฐเชตเซ€ เชถเช•เซเชฏ เช›เซ‡. เช† เชธเชฎเชธเซเชฏเชพเชจเซ‡ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡, tech.ru เชธเชพเชฅเซ‡ เชธเชนเช•เชพเชฐ เชตเชงเซ เช…เชธเชฐเช•เชพเชฐเช• เชฐเชนเซ‡เชถเซ‡.

เชกเซ‡เชฌเชฟเชฏเชจ 9 เชธเชฐเซเชตเชฐ เชชเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡.

เชธเชฐเซเชตเชฐ เชชเชพเชธเซ‡ 2 เช‡เชจเซเชŸเชฐเชซเซ‡เชธ `eno1` เช…เชจเซ‡ `eno2` เช›เซ‡. เชชเซเชฐเชฅเชฎ เช…เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช›เซ‡, เช…เชจเซ‡ เชฌเซ€เชœเซเช‚ เช…เชจเซเช•เซเชฐเชฎเซ‡ เชเชกเชชเซ€ เช›เซ‡.

เชคเซเชฏเชพเช‚ 3 เชธเซเชฅเชฟเชฐ IP เชธเชฐเชจเชพเชฎเชพเช‚ เช›เซ‡, XX.XX.XX.X0 เช…เชจเซ‡ XX.XX.XX.X1 เช…เชจเซ‡ XX.XX.XX.X2 `eno1` เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชชเชฐ เช…เชจเซ‡ `eno5` เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชชเชฐ XX.XX.XX.X2 .

เช‰เชชเชฒเชฌเซเชง 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 เชเช•เชพเช‰เชจเซเชŸ เช›เซ‡ เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชนเซเช‚ เชฎเชพเชฐเชพ เชฎเซ‡เช‡เชฒเชฌเซ‹เช•เซเชธเชจเซ‡ เชฒเชฟเช‚เช• เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚[เช‡เชฎเซ‡เช‡เชฒ เชธเซเชฐเช•เซเชทเชฟเชค]` (เชฎเซ‡เช‡เชฒ เชฎเซ‡เชณเชตเชตเซเช‚ เช…เชจเซ‡ เชธเซ€เชงเชพ gmail เช‡เชจเซเชŸเชฐเชซเซ‡เชธเชฅเซ€ เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเชตเซเช‚).
เชคเซเชฏเชพเช‚ เชเช• เชฎเซ‡เชˆเชฒเชฌเซ‹เช•เซเชธ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช[เช‡เชฎเซ‡เช‡เชฒ เชธเซเชฐเช•เซเชทเชฟเชค]`, เชˆเชฎเซ‡เชˆเชฒเชจเซ€ เชเช• เชจเช•เชฒ เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชนเซเช‚ เชฎเชพเชฐเชพ เชœเซ€เชฎเซ‡เชฒเชฎเชพเช‚ เชœเซ‹เชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚. เช…เชจเซ‡ `เชจเชพ เชตเชคเซ€ เช•เช‚เชˆเช• เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เชธเชฎเชฐเซเชฅ เชฅเชตเซเช‚ เชฆเซเชฐเซเชฒเชญ เช›เซ‡[เช‡เชฎเซ‡เช‡เชฒ เชธเซเชฐเช•เซเชทเชฟเชค]เชตเซ‡เชฌ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชฆเซเชตเชพเชฐเชพ.

เชคเซเชฏเชพเช‚ เชเช• เชฎเซ‡เชˆเชฒเชฌเซ‹เช•เซเชธ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช[เช‡เชฎเซ‡เช‡เชฒ เชธเซเชฐเช•เซเชทเชฟเชค]`, เชœเซ‡ เช‡เชตเชพเชจเชต เชคเซ‡เชจเชพ เช†เช‡เชซเซ‹เชจเชฎเชพเช‚เชฅเซ€ เช‰เชชเชฏเซ‹เช— เช•เชฐเชถเซ‡.

เชฎเซ‹เช•เชฒเซ‡เชฒ เชˆเชฎเซ‡เชˆเชฒ เช เชคเชฎเชพเชฎ เช†เชงเซเชจเชฟเช• เชเชจเซเชŸเซ€เชธเซเชชเชพเชฎ เช†เชตเชถเซเชฏเช•เชคเชพเช“เชจเซเช‚ เชชเชพเชฒเชจ เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช.
เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชจเซ‡เชŸเชตเชฐเซเช•เซเชธเชฎเชพเช‚ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡เชฒ เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจเชจเซเช‚ เช‰เชšเซเชšเชคเชฎ เชธเซเชคเชฐ เชนเซ‹เชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡.
เชชเชคเซเชฐเซ‹ เชฎเซ‹เช•เชฒเชตเชพ เช…เชจเซ‡ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เชฌเช‚เชจเซ‡ เชฎเชพเชŸเซ‡ IPv6 เชธเชชเซ‹เชฐเซเชŸ เชนเซ‹เชตเซ‹ เชœเซ‹เชˆเช.
เชเช• เชธเซเชชเชพเชฎ เชเชธเซเชธเชพเชธเชฟเชจ เชนเซ‹เชตเซ‹ เชœเซ‹เชˆเช เชœเซ‡ เช•เซเชฏเชพเชฐเซ‡เชฏ เชˆเชฎเซ‡เชฒ เชกเชฟเชฒเซ€เชŸ เชจ เช•เชฐเซ‡. เช…เชจเซ‡ เชคเซ‡ เช•เชพเช‚ เชคเซ‹ เชฌเชพเช‰เชจเซเชธ เชฅเชถเซ‡ เช…เชฅเชตเชพ เช›เซ‹เชกเชถเซ‡ เช…เชฅเชตเชพ IMAP โ€œเชธเซเชชเชพเชฎโ€ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชฎเซ‹เช•เชฒเชถเซ‡.
SpamAssassin เช“เชŸเซ‹-เชฒเชฐเซเชจเชฟเช‚เช— เช—เซ‹เช เชตเซ‡เชฒเซเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช: เชœเซ‹ เชนเซเช‚ เชธเซเชชเชพเชฎ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชชเชคเซเชฐ เช–เชธเซ‡เชกเซเช‚, เชคเซ‹ เชคเซ‡ เช†เชฎเชพเช‚เชฅเซ€ เชถเซ€เช–เชถเซ‡; เชœเซ‹ เชนเซเช‚ เชธเซเชชเชพเชฎ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚เชฅเซ€ เชชเชคเซเชฐ เช–เชธเซ‡เชกเซเช‚, เชคเซ‹ เชคเซ‡ เช†เชฎเชพเช‚เชฅเซ€ เชถเซ€เช–เชถเซ‡. SpamAssassin เชคเชพเชฒเซ€เชฎเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹เช เชชเชคเซเชฐ เชธเซเชชเชพเชฎ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ เชคเซ‡เชจเชพ เชชเชฐ เช…เชธเชฐ เช•เชฐเชตเซ€ เชœเซ‹เชˆเช.
PHP เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เช†เชชเซ‡เชฒ เชธเชฐเซเชตเชฐ เชชเชฐ เช•เซ‹เชˆเชชเชฃ เชกเซ‹เชฎเซ‡เชจ เชตเชคเซ€ เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชนเซ‹เชตเชพ เชœเซ‹เชˆเช.
IPv6 เชจ เชนเซ‹เชฏ เชคเซ‡เชตเชพ เช•เซเชฒเชพเชฏเชจเซเชŸ เชชเชฐ IPv6 เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชธเชพเชฅเซ‡ เช“เชชเชจเชตเซ€เชชเซ€เชเชจ เชธเซ‡เชตเชพ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช.

เชชเซเชฐเชฅเชฎ เชคเชฎเชพเชฐเซ‡ IPv6 เชธเชนเชฟเชค เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เช…เชจเซ‡ เชฐเซ‚เชŸเซ€เช‚เช—เชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.
เชชเช›เซ€ เชคเชฎเชพเชฐเซ‡ OpenVPN เชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡, เชœเซ‡ IPv4 เชฆเซเชตเชพเชฐเชพ เช•เชจเซ‡เช•เซเชŸ เชฅเชถเซ‡ เช…เชจเซ‡ เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‡ เชธเซเชŸเซ‡เชŸเชฟเช•-เชฐเชฟเชฏเชฒ IPv6 เชเชกเซเชฐเซ‡เชธ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชถเซ‡. เช† เช•เซเชฒเชพเชฏเชจเซเชŸเชจเซ‡ เชธเชฐเซเชตเชฐ เชชเชฐเชจเซ€ เชคเชฎเชพเชฎ IPv6 เชธเซ‡เชตเชพเช“ เช…เชจเซ‡ เช‡เชจเซเชŸเชฐเชจเซ‡เชŸ เชชเชฐเชจเชพ เช•เซ‹เชˆเชชเชฃ IPv6 เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ€ เชเช•เซเชธเซ‡เชธ เชนเชถเซ‡.
เชชเช›เซ€ เชคเชฎเชพเชฐเซ‡ เช…เช•เซเชทเชฐเซ‹ + SPF + DKIM + rDNS เช…เชจเซ‡ เช…เชจเซเชฏ เชธเชฎเชพเชจ เชจเชพเชจเซ€ เชตเชธเซเชคเซเช“ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‹เชธเซเชŸเชซเชฟเช•เซเชธเชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.
เชชเช›เซ€ เชคเชฎเชพเชฐเซ‡ เชกเซ‹เชตเช•เซ‹เชŸเชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซ€ เช…เชจเซ‡ เชฎเชฒเซเชŸเชฟเชกเซ‹เชฎเซ‡เชจเชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.
เชชเช›เซ€ เชคเชฎเชพเชฐเซ‡ 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 - eno4 เชชเชฐ IPv1 #1.
XX.XX.XX.X1 - eno4 เชชเชฐ IPv2 #1.
XX.XX.XX.X2 - eno4 เชชเชฐ IPv3 #1.
XX.XX.XX.X5 - eno4 เชชเชฐ IPv1 #2.
XX.XX.XX.1 - IPv4 เช—เซ‡เชŸเชตเซ‡.
XXXX:XXX:XXX:XXXX::/64 - เชธเชฎเช—เซเชฐ เชธเชฐเซเชตเชฐ เชฎเชพเชŸเซ‡ IPv6.
XXXX:XXXX:XXXX:XXXX:1:2::/96 - eno6 เชฎเชพเชŸเซ‡ IPv2, เชฌเชนเชพเชฐเชฅเซ€ เชฌเชพเช•เซ€เชจเซเช‚ เชฌเชงเซเช‚ eno1 เชฎเชพเช‚ เชœเชพเชฏ เช›เซ‡.
XXXX:XXXX:XXXX:XXXX::1 โ€” IPv6 เช—เซ‡เชŸเชตเซ‡ (เช เชจเซ‹เช‚เชงเชตเซเช‚ เชฏเซ‹เช—เซเชฏ เช›เซ‡ เช•เซ‡ เช† เช…เชฒเช— เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ/เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช. IPv6 เชธเซเชตเซ€เชšเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ‹).
dns-nameservers - 127.0.0.1 เชธเซ‚เชšเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ (เช•เชพเชฐเชฃ เช•เซ‡ เชฌเชพเช‡เชจเซเชก เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡) เช…เชจเซ‡ 213.248.1.6 (เช† tech.ru เชคเชฐเชซเชฅเซ€ เช›เซ‡).

โ€œเชŸเซ‡เชฌเชฒ eno1tโ€ เช…เชจเซ‡ โ€œtable eno2tโ€ - เช† เชฐเซ‚เชŸ-เชจเชฟเชฏเชฎเซ‹เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ eno1 -> เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชตเซ‡เชถเชคเซ‹ เชŸเซเชฐเชพเชซเชฟเช• เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชจเซ€เช•เชณเชถเซ‡, เช…เชจเซ‡ eno2 -> เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชตเซ‡เชถเชคเซ‹ เชŸเซเชฐเชพเชซเชฟเช• เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชจเซ€เช•เชณเซ€ เชœเชถเซ‡. เช…เชจเซ‡ เชธเชฐเซเชตเชฐ เชฆเซเชตเชพเชฐเชพ เชถเชฐเซ‚ เช•เชฐเชพเชฏเซ‡เชฒเชพ เชœเซ‹เชกเชพเชฃเซ‹ เชชเชฃ eno1 เชฎเชพเชฐเชซเชคเซ‡ เชœเชถเซ‡.

ip route add default via XX.XX.XX.1 table eno1t

เช† เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เช…เชฎเซ‡ เชธเซเชชเชทเซเชŸ เช•เชฐเซ€เช เช›เซ€เช เช•เซ‡ "เชŸเซ‡เชฌเชฒ 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

เช† เชฌเซเชฒเซ‹เช• eno4 เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชฎเชพเชŸเซ‡ เชฌเซ€เชœเชพ IPv1 เชจเซ‡ เชธเซเชชเชทเซเชŸ เช•เชฐเซ‡ เช›เซ‡.

ip route add 10.8.0.0/24 dev tun0 src XX.XX.XX.X1 table eno1t

เช† เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เช…เชฎเซ‡ XX.XX.XX.X4 เชธเชฟเชตเชพเชฏ OpenVPN เช•เซเชฒเชพเชฏเช‚เชŸเชฅเซ€ เชธเซเชฅเชพเชจเชฟเช• IPv0 เชธเซเชงเซ€เชจเซ‹ เชฐเซ‚เชŸ เชธเซ‡เชŸ เช•เชฐเซเชฏเซ‹ เช›เซ‡.
เชนเซเช‚ เชนเชœเซ€ เชชเชฃ เชธเชฎเชœเซ€ เชถเช•เชคเซ‹ เชจเชฅเซ€ เช•เซ‡ เช† เช†เชฆเซ‡เชถ เชฌเชงเชพ IPv4 เชฎเชพเชŸเซ‡ เชถเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซ‹ เช›เซ‡.

iface eno1 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:1::/64
        gateway XXXX:XXXX:XXXX:XXXX::1

เช† เชคเซ‡ เช›เซ‡ เชœเซเชฏเชพเช‚ เช†เชชเชฃเซ‡ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชฎเชพเชŸเซ‡ เชธเชฐเชจเชพเชฎเซเช‚ เชธเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช. เชธเชฐเซเชตเชฐ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— "เช†เช‰เชŸเช—เซ‹เช‡เช‚เช—" เชเชกเซเชฐเซ‡เชธ เชคเชฐเซ€เช•เซ‡ เช•เชฐเชถเซ‡. เชซเชฐเซ€เชฅเซ€ เช•เซ‹เชˆเชชเชฃ เชฐเซ€เชคเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เชจเชนเซ€เช‚.

เชถเชพ เชฎเชพเชŸเซ‡ ":1:1::" เช†เชŸเชฒเซเช‚ เชœเชŸเชฟเชฒ เช›เซ‡? เชœเซ‡เชฅเซ€ OpenVPN เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช…เชจเซ‡ เชฎเชพเชคเซเชฐ เช† เชฎเชพเชŸเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡. เช† เชตเชฟเชถเซ‡ เชชเช›เซ€เชฅเซ€ เชตเชงเซ.

เช—เซ‡เชŸเชตเซ‡เชจเชพ เชตเชฟเชทเชฏ เชชเชฐ - เชคเซ‡ เช† เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เชธเชพเชฐเซเช‚ เช›เซ‡. เชชเชฐเช‚เชคเซ เชธเชพเชšเซ‹ เชฐเชธเซเชคเซ‹ เช เช›เซ‡ เช•เซ‡ เชธเชฐเซเชตเชฐ เชœเซ‡ เชธเซเชตเซ€เชš เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒ เช›เซ‡ เชคเซ‡เชจเซ‹ 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" - เช•เชพเชฐเชฃ เช•เซ‡ เช† เช…เชฎเชพเชฐเชพ เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ‹ เชธเช‚เชชเซ‚เชฐเซเชฃ เชชเซ‚เชฒ เช›เซ‡.
tun0 - เชธเชฌเชจเซ‡เชŸ eno1 เช•เชฐเชคเชพ เชฎเซ‹เชŸเซเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช. เชจเชนเชฟเช‚เชคเชฐ, OpenVPN เช•เซเชฒเชพเชฏเชจเซเชŸเซเชธ เชฎเชพเชŸเซ‡ IPv6 เช—เซ‡เชŸเชตเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เชฌเชจเชถเซ‡ เชจเชนเซ€เช‚.
eno2 - เชธเชฌเชจเซ‡เชŸ tun0 เช•เชฐเชคเชพเช‚ เชฎเซ‹เชŸเซเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช. เชจเชนเชฟเช‚เชคเชฐ, OpenVPN เช•เซเชฒเชพเชฏเช‚เชŸ เชธเซเชฅเชพเชจเชฟเช• IPv6 เชธเชฐเชจเชพเชฎเชพเช‚เช“เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพเชฎเชพเช‚ เชธเชฎเชฐเซเชฅ เชนเชถเซ‡ เชจเชนเซ€เช‚.
เชธเซเชชเชทเซเชŸเชคเชพ เชฎเชพเชŸเซ‡, เชฎเซ‡เช‚ 16 เชจเซเช‚ เชธเชฌเชจเซ‡เชŸ เชชเช—เชฒเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซเช‚, เชชเชฐเช‚เชคเซ เชœเซ‹ เชคเชฎเซ‡ เชˆเชšเซเช›เซ‹, เชคเซ‹ เชคเชฎเซ‡ "1" เชชเช—เชฒเซเช‚ เชชเชฃ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.
เชคเชฆเชจเซเชธเชพเชฐ, 64+16 = 80, เช…เชจเซ‡ 80+16 = 96.

เชตเชงเซ เชธเซเชชเชทเซเชŸเชคเชพ เชฎเชพเชŸเซ‡:
XXXX:XXX:XXXX:XXXX:1:1:YYYY:YYYY เช เชเชตเชพ เชธเชฐเชจเชพเชฎเชพเช‚ เช›เซ‡ เชœเซ‡ eno1 เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชชเชฐ เชšเซ‹เช•เซเช•เชธ เชธเชพเช‡เชŸเซเชธ เช…เชฅเชตเชพ เชธเซ‡เชตเชพเช“เชจเซ‡ เชธเซ‹เช‚เชชเชตเชพ เชœเซ‹เชˆเช.
XXXX:XXX:XXXX:XXXX:1:2:YYYY:YYYY เช เชเชตเชพ เชธเชฐเชจเชพเชฎเชพเช‚ เช›เซ‡ เชœเซ‡ eno2 เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชชเชฐ เชšเซ‹เช•เซเช•เชธ เชธเชพเช‡เชŸเซเชธ เช…เชฅเชตเชพ เชธเซ‡เชตเชพเช“เชจเซ‡ เชธเซ‹เช‚เชชเชตเชพ เชœเซ‹เชˆเช.
XXXX:XXX:XXXX:XXXX:1:3:YYYY:YYYY เช เชเชตเชพ เชธเชฐเชจเชพเชฎเชพเช‚ เช›เซ‡ เช•เซ‡ เชœเซ‡ OpenVPN เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‡ เช…เชธเชพเช‡เชจ เช•เชฐเชตเชพ เชœเซ‹เชˆเช เช…เชฅเชตเชพ OpenVPN เชธเซ‡เชตเชพ เชธเชฐเชจเชพเชฎเชพเช‚ เชคเชฐเซ€เช•เซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพ เชœเซ‹เชˆเช.

เชจเซ‡เชŸเชตเชฐเซเช•เชจเซ‡ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡, เชธเชฐเซเชตเชฐเชจเซ‡ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช.
เชœเซเชฏเชพเชฐเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซเชฏเชพเชฐเซ‡ IPv4 เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ (เชคเซ‡เชจเซ‡ เชธเซเช•เซเชฐเซ€เชจเชฎเชพเช‚ เชฒเชชเซ‡เชŸเชตเชพเชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเซ‹ - เช…เชจเซเชฏเชฅเชพ เช† เช†เชฆเซ‡เชถ เชธเชฐเซเชตเชฐ เชชเชฐ เชจเซ‡เชŸเชตเชฐเซเช•เชจเซ‡ เช•เซเชฐเซ‡เชถ เช•เชฐเชถเซ‡):

/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

เช•เซ‹เชˆเชชเชฃ เชœเซ‡ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชšเชพเชฒเซ เชฅเชฏเชพ เชชเช›เซ€ เชคเชฐเชค เชœ IPv6 (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ nginx) เชจเซ‡ เชฌเชพเช‚เชงเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชถเซ‡ เชคเซ‡เชจเซ‡ เชญเซ‚เชฒ เชชเซเชฐเชพเชชเซเชค เชฅเชถเซ‡. เช•เซ‡ เช† เชธเชฐเชจเชพเชฎเซเช‚ เช‰เชชเชฒเชฌเซเชง เชจเชฅเซ€.

เช†เชตเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซ‡ เชŸเชพเชณเชตเชพ เชฎเชพเชŸเซ‡, เช†เชตเซ€ เชธเซ‡เชŸเชฟเช‚เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.proxy_ndp = 1

เช† IPv6 เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชตเชฟเชจเชพ, OpenVPN เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‹ เชŸเซเชฐเชพเชซเชฟเช• เชตเชฟเชถเซเชตเชฎเชพเช‚ เชœเชคเซ‹ เชจเชฅเซ€.

เช…เชจเซเชฏ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เช•เชพเช‚ เชคเซ‹ เชธเช‚เชฌเช‚เชงเชฟเชค เชจเชฅเซ€ เช…เชฅเชตเชพ เชฎเชจเซ‡ เชฏเชพเชฆ เชจเชฅเซ€ เช•เซ‡ เชคเซ‡ เชถเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เช›เซ‡.
เชชเชฐเช‚เชคเซ เชฎเชพเชคเซเชฐ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชนเซเช‚ เชคเซ‡เชจเซ‡ "เชœเซ‡เชฎ เช›เซ‡ เชคเซ‡เชฎ" เช›เซ‹เชกเซ€ เชฆเช‰เช‚ เช›เซเช‚.

เชธเชฐเซเชตเชฐเชจเซ‡ เชฐเซ€เชฌเซ‚เชŸ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เช† เชซเชพเช‡เชฒเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชฒเซ‡เชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

sysctl -p

"เชŸเซ‡เชฌเชฒ" เชจเชฟเชฏเชฎเซ‹ เชตเชฟเชถเซ‡ เชตเชงเซ เชตเชฟเช—เชคเซ‹: 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 เช“เชชเชจเชตเซ€เชชเซ€เชเชจ เชจเซ‡เชŸเชตเชฐเซเช•. เช“เชชเชจเชตเซ€เชชเซ€เชเชจ เช•เซเชฒเชพเชฏเช‚เชŸ เชฎเชพเชŸเซ‡ IPv4 เชธเชฐเชจเชพเชฎเชพเช‚.
เชจเชฟเชฏเชฎเซ‹เชจเซ€ เชธเซเชธเช‚เช—เชคเชคเชพ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡.

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

OpenVPN เช•เซเชฒเชพเชฏเช‚เชŸ เช…เชจเซ‡ เชˆเชจเซเชŸเชฐเชจเซ‡เชŸ เชตเชšเซเชšเซ‡ IPv4 เชชเซ‡เช•เซ‡เชŸเซเชธ เชซเซ‹เชฐเชตเชฐเซเชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เช† เช†เชฆเซ‡เชถเซ‹เชฎเชพเช‚เชฅเซ€ เชเช•เชจเซ€ เชจเซ‹เช‚เชงเชฃเซ€ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชตเชฟเชตเชฟเชง เช•เซ‡เชธเซ‹ เชฎเชพเชŸเซ‡, เชตเชฟเช•เชฒเซเชชเซ‹เชฎเชพเช‚เชฅเซ€ เชเช• เชฏเซ‹เช—เซเชฏ เชจเชฅเซ€.
เชฌเช‚เชจเซ‡ เช†เชฆเซ‡เชถเซ‹ เชฎเชพเชฐเชพ เช•เซ‡เชธ เชฎเชพเชŸเซ‡ เชฏเซ‹เช—เซเชฏ เช›เซ‡.
เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ เชตเชพเช‚เชšเซเชฏเชพ เชชเช›เซ€, เชฎเซ‡เช‚ เชชเซเชฐเชฅเชฎ เชตเชฟเช•เชฒเซเชช เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซ‹ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เช“เช›เชพ CPU เชตเชพเชชเชฐเซ‡ เช›เซ‡.

เชฐเซ€เชฌเซ‚เชŸ เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชคเชฎเชพเชฎ iptables เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชจเซ‡ เชชเชธเช‚เชฆ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชฎเชจเซ‡ เช•เซเชฏเชพเช‚เช• เชธเชพเชšเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

เช†เชตเชพ เชจเชพเชฎเซ‹ เชคเช• เชฆเซเชตเชพเชฐเชพ เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชจ เชนเชคเชพ. เชคเซ‡เช“ "iptables-sistent" เชชเซ‡เช•เซ‡เชœ เชฆเซเชตเชพเชฐเชพ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชฏ เช›เซ‡.

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" เชŸเซ…เช—เชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เชŸเชฟเชชเซเชชเชฃเซ€เช“ เชตเชฟเชจเชพเชจเซ€ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช.
เช…เชจเซ‡ "tls-auth" เชŸเซ…เช—เชจเซ€ เชชเชนเซ‡เชฒเชพเช‚ เชคเชฐเชค เชœ "เช•เซ€-เชฆเชฟเชถเชพ 1" เชชเชฃ เชฎเซ‚เช•เซ‹.

เชšเชพเชฒเซ‹ 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 เช—เซ‡เชŸเชตเซ‡เชจเซ‡ เชธเซเชตเชคเช‚เชคเซเชฐ เชฐเซ€เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเชตเซเช‚ เชคเซ‡ เชœเชพเชฃเชคเซเช‚ เชจเชฅเซ€.
เชคเชฎเชพเชฐเซ‡ เชฆเชฐเซ‡เช• เช•เซเชฒเชพเชฏเช‚เชŸ เชฎเชพเชŸเซ‡ เช†เชจเซ‡ "เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€" เชซเซ‹เชฐเชตเชฐเซเชก เช•เชฐเชตเซเช‚ เชชเชกเชถเซ‡.

# 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

เชฎเชจเซ‡ เชฏเชพเชฆ เชฐเชพเช–เชตเซเช‚ เชฎเซเชถเซเช•เซ‡เชฒ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡ เช†เชตเซเช‚ เชถเชพ เชฎเชพเชŸเซ‡ เชฒเช–เชพเชฏเซเช‚ เช›เซ‡.

เชนเชตเซ‡ เชจเซ‡เชŸเชฎเชพเชธเซเช• = 112 เชตเชฟเชšเชฟเชคเซเชฐ เชฒเชพเช—เซ‡ เช›เซ‡ (เชคเซ‡ เชคเซเชฏเชพเช‚ 96 เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช).
เช…เชจเซ‡ เช‰เชชเชธเชฐเซเช— เชตเชฟเชšเชฟเชคเซเชฐ เช›เซ‡, เชคเซ‡ tun0 เชจเซ‡เชŸเชตเชฐเซเช• เชธเชพเชฅเซ‡ เชฎเซ‡เชณ เช–เชพเชคเซ‹ เชจเชฅเซ€.
เชชเชฃ เช เซ€เช• เช›เซ‡, เชนเซเช‚ เชคเซ‡เชจเซ‡ เชœเซ‡เชฎ เช›เซ‡ เชคเซ‡เชฎ เช›เซ‹เชกเซ€เชถ.

cipher DES-EDE3-CBC

เช† เชฆเชฐเซ‡เช• เชฎเชพเชŸเซ‡ เชจเชฅเซ€ - เชฎเซ‡เช‚ เช•เชจเซ‡เช•เซเชถเชจเชจเซ‡ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸ เช•เชฐเชตเชพเชจเซ€ เช† เชชเชฆเซเชงเชคเชฟ เชชเชธเช‚เชฆ เช•เชฐเซ€ เช›เซ‡.

OpenVPN IPv4 เชธเซ‡เชŸ เช•เชฐเชตเชพ เชตเชฟเชถเซ‡ เชตเชงเซ เชœเชพเชฃเซ‹.

OpenVPN IPv6 เชธเซ‡เชŸ เช•เชฐเชตเชพ เชตเชฟเชถเซ‡ เชตเชงเซ เชœเชพเชฃเซ‹.

============== เชชเซ‹เชธเซเชŸเชซเชฟเช•เซเชธ ==============

เชฎเซเช–เซเชฏ เชชเซ‡เช•เซ‡เชœ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡:

apt-get install postfix

เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, "เช‡เชจเซเชŸเชฐเชจเซ‡เชŸ เชธเชพเช‡เชŸ" เชชเชธเช‚เชฆ เช•เชฐเซ‹.

เชฎเชพเชฐเซเช‚ "/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-เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸเชจเซ‡ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸ เช•เชฐเชตเชพ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡.
http-เชตเชฟเชจเช‚เชคเชฟเชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เชซเช•เซเชค เชคเซ‡ เชœ เชตเชพเช‚เชšเซ€ เชถเช•เซ‡ เช›เซ‡ เชœเซ‡เชฎเชจเซ€ เชชเชพเชธเซ‡ เช–เชพเชจเช—เซ€ เช•เซ€ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡, เชซเช•เซเชค เชคเซ‡ เชธเชฐเซเชตเชฐ เช•เซ‡ เชœเซ‡เชจเชพ เชชเชฐ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡.
Http-เชตเชฟเชจเช‚เชคเซ€ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซ€ เชเช• URI เชงเชฐเชพเชตเซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€, เชœเซ‹ เช•เซ‹เชˆ เชฆเซ‡เชถ เชธเชฎเช—เซเชฐ เชธเชพเช‡เชŸ เชชเชฐ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เชšเซ‹เช•เซเช•เชธ เชชเซƒเชทเซเช  เชชเชฐ เชเช•เซเชธเซ‡เชธเชจเซ‡ เชชเซเชฐเชคเชฟเชฌเช‚เชงเชฟเชค เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เช›เซ‡, เชคเซ‹ https เชธเชพเช‡เชŸเซเชธ เชฎเชพเชŸเซ‡ เช† เช•เชฐเชตเซเช‚ เช…เชถเช•เซเชฏ เช›เซ‡.

เชชเช—เชฒเซเช‚ #2 - เชเชจเซเช•เซเชฐเชฟเชชเซเชŸเซ‡เชก เชชเซเชฐเชคเชฟเชธเชพเชฆ.
เชตเซ‡เชฌ เชธเชฐเซเชตเชฐ เชเช• เชœเชตเชพเชฌ เช†เชชเซ‡ เช›เซ‡ เชœเซ‡ เชฐเชธเซเชคเชพ เชชเชฐ เชธเชฐเชณเชคเชพเชฅเซ€ เชตเชพเช‚เชšเซ€ เชถเช•เชพเชฏ เช›เซ‡.
เช‰เช•เซ‡เชฒ เช…เชคเซเชฏเช‚เชค เชธเชฐเชณ เช›เซ‡ - เชฌเซเชฐเชพเช‰เชเชฐ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เชฆเชฐเซ‡เช• https เชธเชพเช‡เชŸ เชฎเชพเชŸเซ‡ เชธเชฎเชพเชจ เช–เชพเชจเช—เซ€-เชœเชพเชนเซ‡เชฐ เช•เซ€ เชœเซ‹เชกเซ€ เชฌเชจเชพเชตเซ‡ เช›เซ‡.
เช…เชจเซ‡ เชธเชพเช‡เชŸเชจเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€ เชฎเชพเชŸเซ‡เชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เชธเชพเชฅเซ‡, เชคเซ‡ เชคเซ‡เชจเซ€ เชธเซเชฅเชพเชจเชฟเช• เชœเชพเชนเซ‡เชฐ เช•เซ€ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡.
เชตเซ‡เชฌ เชธเชฐเซเชตเชฐ เชคเซ‡เชจเซ‡ เชฏเชพเชฆ เชฐเชพเช–เซ‡ เช›เซ‡ เช…เชจเซ‡, เชœเซเชฏเชพเชฐเซ‡ http-เชชเซเชฐเชคเชฟเชธเชพเชฆ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เชšเซ‹เช•เซเช•เชธ เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€ เชธเชพเชฅเซ‡ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸ เช•เชฐเซ‡ เช›เซ‡.
เชนเชตเซ‡ http-เชชเซเชฐเชคเชฟเชธเชพเชฆ เชซเช•เซเชค เช•เซเชฒเชพเชฏเช‚เชŸเชจเชพ เชฌเซเชฐเชพเช‰เชเชฐ เช–เชพเชจเช—เซ€ เช•เซ€เชจเชพ เชฎเชพเชฒเชฟเช• เชฆเซเชตเชพเชฐเชพ เชœ เชกเชฟเช•เซเชฐเชฟเชชเซเชŸ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ (เชเชŸเชฒเซ‡ โ€‹โ€‹โ€‹โ€‹เช•เซ‡, เช•เซเชฒเชพเชฏเชจเซเชŸ เชชเซ‹เชคเซ‡).

เชชเช—เชฒเซเช‚ เชจเช‚เชฌเชฐ 3 - เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชšเซ‡เชจเชฒ เชฆเซเชตเชพเชฐเชพ เชธเซเชฐเช•เซเชทเชฟเชค เช•เชจเซ‡เช•เซเชถเชจ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเชตเซเช‚.
เช‰เชฆเชพเชนเชฐเชฃ เชจเช‚เชฌเชฐ 2 เชฎเชพเช‚ เชเช• เชจเชฌเชณเชพเชˆ เช›เซ‡ - เชถเซเชญเชšเชฟเช‚เชคเช•เซ‹เชจเซ‡ http-เชตเชฟเชจเช‚เชคเซ€ เช…เชŸเช•เชพเชตเชตเชพ เช…เชจเซ‡ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€เชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชตเชพเชฅเซ€ เช•เช‚เชˆเชชเชฃ เช…เชŸเช•เชพเชตเชคเซเช‚ เชจเชฅเซ€.
เช†เชฎ, เชธเช‚เชฆเซ‡เชถเชพเชตเซเชฏเชตเชนเชพเชฐ เชšเซ‡เชจเชฒ เชฌเชฆเชฒเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชฎเชงเซเชฏเชธเซเชฅเซ€ เชฎเซ‹เช•เชฒเซ‡เชฒเชพ เช…เชจเซ‡ เชชเซเชฐเชพเชชเซเชค เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซ€ เชคเชฎเชพเชฎ เชธเชพเชฎเช—เซเชฐเซ€ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชœเซ‹เชถเซ‡.
เช†เชจเซ€ เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเชตเซ‹ เช…เชคเซเชฏเช‚เชค เชธเชฐเชณ เช›เซ‡ - เชซเช•เซเชค เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€ เชธเชพเชฅเซ‡ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸเซ‡เชก เชธเช‚เชฆเซ‡เชถ เชคเชฐเซ€เช•เซ‡ เชฌเซเชฐเชพเช‰เชเชฐเชจเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€ เชฎเซ‹เช•เชฒเซ‹.
เชตเซ‡เชฌ เชธเชฐเซเชตเชฐ เชชเช›เซ€ เชชเซเชฐเชฅเชฎ "เชคเชฎเชพเชฐเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€ เช†เชจเชพ เชœเซ‡เชตเซ€ เช›เซ‡" เชœเซ‡เชตเซ‹ เชชเซเชฐเชคเชฟเชญเชพเชต เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เชœ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€ เชตเชกเซ‡ เช† เชธเช‚เชฆเซ‡เชถเชจเซ‡ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸ เช•เชฐเซ‡ เช›เซ‡.
เชฌเซเชฐเชพเช‰เชเชฐ เชชเซเชฐเชคเชฟเชธเชพเชฆเชจเซ‡ เชœเซเช เช›เซ‡ - เชœเซ‹ "เชคเชฎเชพเชฐเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€ เช†เชจเชพ เชœเซ‡เชตเซ€ เช›เซ‡" เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡ - เชคเซ‹ เช† 100% เช—เซ‡เชฐเซ‡เช‚เชŸเซ€ เช›เซ‡ เช•เซ‡ เช† เชธเช‚เชšเชพเชฐ เชšเซ‡เชจเชฒ เชธเซเชฐเช•เซเชทเชฟเชค เช›เซ‡.
เชคเซ‡ เช•เซ‡เชŸเชฒเซเช‚ เชธเชฒเชพเชฎเชค เช›เซ‡?
เช†เชตเซ€ เชธเซเชฐเช•เซเชทเชฟเชค เช•เซ‹เชฎเซเชฏเซเชจเชฟเช•เซ‡เชถเชจ เชšเซ‡เชจเชฒเชจเซเช‚ เชจเชฟเชฐเซเชฎเชพเชฃ เชชเชฟเช‚เช—*2 เชจเซ€ เชเชกเชชเซ‡ เชฅเชพเชฏ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ 20ms.
เชนเซเชฎเชฒเชพเช–เซ‹เชฐ เชชเชพเชธเซ‡ เช…เช—เชพเช‰เชฅเซ€ เชเช• เชชเช•เซเชทเชจเซ€ เช–เชพเชจเช—เซ€ เชšเชพเชตเซ€ เชนเซ‹เชตเซ€ เช†เชตเชถเซเชฏเช• เช›เซ‡. เช…เชฅเชตเชพ เชฌเซ‡ เชฎเชฟเชฒเซ€เชธเซ‡เช•เช‚เชกเชฎเชพเช‚ เช–เชพเชจเช—เซ€ เช•เซ€ เชถเซ‹เชงเซ‹.
เชธเซเชชเชฐ เช•เซ‹เชฎเซเชชเซเชฏเซเชŸเชฐ เชชเชฐ เชเช• เช†เชงเซเชจเชฟเช• เช–เชพเชจเช—เซ€ เช•เซ€เชจเซ‡ เชนเซ‡เช• เช•เชฐเชตเชพเชฎเชพเช‚ เชฆเชพเชฏเช•เชพเช“ เชฒเชพเช—เซ€ เชœเชถเซ‡.

เชชเช—เชฒเซเช‚ #4 - เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€เช“เชจเซ‹ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชกเซ‡เชŸเชพเชฌเซ‡เช.
เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡, เช† เช†เช–เซ€ เชตเชพเชฐเซเชคเชพเชฎเชพเช‚ เช•เซเชฒเชพเชฏเช‚เชŸ เช…เชจเซ‡ เชธเชฐเซเชตเชฐ เชตเชšเซเชšเซ‡เชจเชพ เชธเช‚เชšเชพเชฐ เชšเซ‡เชจเชฒ เชชเชฐ เชนเซเชฎเชฒเชพเช–เซ‹เชฐเชจเซ‡ เชฌเซ‡เชธเชตเชพเชจเซ€ เชคเช• เช›เซ‡.
เช•เซเชฒเชพเชฏเช‚เชŸ เชธเชฐเซเชตเชฐ เชนเซ‹เชตเชพเชจเซ‹ เชกเซ‹เชณ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เช…เชจเซ‡ เชธเชฐเซเชตเชฐ เช•เซเชฒเชพเชฏเช‚เชŸ เชนเซ‹เชตเชพเชจเซ‹ เชกเซ‹เชณ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เช…เชจเซ‡ เชฌเช‚เชจเซ‡ เชฆเชฟเชถเชพเชฎเชพเช‚ เชšเชพเชตเซ€เช“เชจเซ€ เชœเซ‹เชกเซ€เชจเซเช‚ เช…เชจเซเช•เชฐเชฃ เช•เชฐเซ‹.
เชชเช›เซ€ เชนเซเชฎเชฒเชพเช–เซ‹เชฐ เชคเชฎเชพเชฎ เชŸเซเชฐเชพเชซเชฟเช• เชœเซ‹เชถเซ‡ เช…เชจเซ‡ เชŸเซเชฐเชพเชซเชฟเช•เชจเซ‡ "เชธเช‚เชชเชพเชฆเชฟเชค" เช•เชฐเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เชนเชถเซ‡.
เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเซเชฏเชพเช‚ เชชเซˆเชธเชพ เชฎเซ‹เช•เชฒเชตเชพ เชคเซ‡ เชธเชฐเชจเชพเชฎเซเช‚ เชฌเชฆเชฒเซ‹ เช…เชฅเชตเชพ เช“เชจเชฒเชพเชˆเชจ เชฌเซ‡เช‚เช•เชฟเช‚เช—เชฎเชพเช‚เชฅเซ€ เชชเชพเชธเชตเชฐเซเชก เช•เซ‹เชชเซ€ เช•เชฐเซ‹ เช…เชฅเชตเชพ "เชตเชพเช‚เชงเชพเชœเชจเช•" เชธเชพเชฎเช—เซเชฐเซ€เชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเซ‹.
เช†เชตเชพ เชนเซเชฎเชฒเชพเช–เซ‹เชฐเซ‹เชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเซ‡เช“ เชฆเชฐเซ‡เช• https เชธเชพเช‡เชŸ เชฎเชพเชŸเซ‡ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€ เชธเชพเชฅเซ‡ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เช†เชตเซเชฏเชพ เชนเชคเชพ.
เชฆเชฐเซ‡เช• เชฌเซเชฐเชพเช‰เชเชฐ เช†เชตเชพ 200 เชœเซ‡เชŸเชฒเชพ เชกเซ‡เชŸเชพเชฌเซ‡เชธเซ‡เชธเชจเชพ เช…เชธเซเชคเชฟเชคเซเชต เชตเชฟเชถเซ‡ "เชœเชพเชฃเซ‡ เช›เซ‡". เช† เชฆเชฐเซ‡เช• เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชชเชนเซ‡เชฒเชพเชฅเซ€ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช†เชตเซ‡ เช›เซ‡.
เชฆเชฐเซ‡เช• เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเชจเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€ เชฆเซเชตเชพเชฐเชพ "เชœเซเชžเชพเชจ" เชธเชฎเชฐเซเชฅเชฟเชค เช›เซ‡. เชเชŸเชฒเซ‡ เช•เซ‡, เชฆเชฐเซ‡เช• เชšเซ‹เช•เซเช•เชธ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชธเชคเซเชคเชพเชงเชฟเช•เชพเชฐเซ€ เชธเชพเชฅเซ‡เชจเซเช‚ เชœเซ‹เชกเชพเชฃ เชฌเชจเชพเชตเชŸเซ€ เช•เชฐเซ€ เชถเช•เชพเชคเซเช‚ เชจเชฅเซ€.

เชนเชตเซ‡ https เชฎเชพเชŸเซ‡ SSL เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซ‹ เชคเซ‡เชจเซ€ เชธเชฐเชณ เชธเชฎเชœ เช›เซ‡.
เชœเซ‹ เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เชฎเช—เชœเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชคเซ‡ เชธเซเชชเชทเซเชŸ เชฅเชˆ เชœเชถเซ‡ เช•เซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชตเชฟเชถเซ‡เชท เชธเซ‡เชตเชพเช“ เช† เชฎเชพเชณเช–เชพเชฎเชพเช‚ เช•เช‚เชˆเช• เชนเซ‡เช• เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เชคเซ‡ เชคเซ‡เชฎเชจเซ‡ เชญเชฏเช‚เช•เชฐ เชชเซเชฐเชฏเชคเซเชจเซ‹ เช–เชฐเซเชš เช•เชฐเชถเซ‡.
เช…เชจเซ‡ NSA เช…เชฅเชตเชพ CIA เช•เชฐเชคเชพเช‚ เชจเชพเชจเซ€ เชธเช‚เชธเซเชฅเชพเช“ - VIPs เชฎเชพเชŸเซ‡ เชชเชฃ เชนเชพเชฒเชจเชพ เชธเซเชฐเช•เซเชทเชพ เชธเซเชคเชฐเชจเซ‡ เชนเซ‡เช• เช•เชฐเชตเซเช‚ เชฒเช—เชญเช— เช…เชถเช•เซเชฏ เช›เซ‡.

เชนเซเช‚ ssh เช•เชจเซ‡เช•เซเชถเชจเซเชธ เชตเชฟเชถเซ‡ เชชเชฃ เช‰เชฎเซ‡เชฐเซ€เชถ. เชคเซเชฏเชพเช‚ เช•เซ‹เชˆ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€เช“ เชจเชฅเซ€, เชคเซ‹ เชคเชฎเซ‡ เชถเซเช‚ เช•เชฐเซ€ เชถเช•เซ‹? เชธเชฎเชธเซเชฏเชพ เชฌเซ‡ เชฐเซ€เชคเซ‡ เช‰เช•เซ‡เชฒเชพเชฏ เช›เซ‡.
เชตเชฟเช•เชฒเซเชช ssh-เชฌเชพเชฏ-เชชเชพเชธเชตเชฐเซเชก:
เชชเซเชฐเชฅเชฎ เช•เชจเซ‡เช•เซเชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ, ssh เช•เซเชฒเชพเชฏเชจเซเชŸเซ‡ เชšเซ‡เชคเชตเชฃเซ€ เช†เชชเชตเซ€ เชœเซ‹เชˆเช เช•เซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ ssh เชธเชฐเซเชตเชฐเชฎเชพเช‚เชฅเซ€ เชจเชตเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€ เช›เซ‡.
เช…เชจเซ‡ เช†เช—เชณเชจเชพ เชœเซ‹เชกเชพเชฃเซ‹ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชœเซ‹ เชšเซ‡เชคเชตเชฃเซ€ "ssh เชธเชฐเซเชตเชฐ เชคเชฐเชซเชฅเซ€ เชจเชตเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€" เชฆเซ‡เช–เชพเชฏ เช›เซ‡, เชคเซ‹ เชคเซ‡เชจเซ‹ เช…เชฐเซเชฅ เช เชฅเชถเซ‡ เช•เซ‡ เชคเซ‡เช“ เชคเชฎเชพเชฐเซ€ เชตเชพเชค เชธเชพเช‚เชญเชณเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ‡.
เช…เชฅเชตเชพ เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เชชเซเชฐเชฅเชฎ เช•เชจเซ‡เช•เซเชถเชจ เชชเชฐ เชธเชพเช‚เชญเชณเซเชฏเชพ เชนเชคเชพ, เชชเชฐเช‚เชคเซ เชนเชตเซ‡ เชคเชฎเซ‡ เชฎเชงเซเชฏเชธเซเชฅเซ€ เชตเชฟเชจเชพ เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ‡ เชตเชพเชคเชšเซ€เชค เช•เชฐเซ‹ เช›เซ‹.
เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เชตเชพเชฏเชฐเชŸเซ‡เชชเซ€เช‚เช—เชจเซ€ เชนเช•เซ€เช•เชค เชธเชนเซ‡เชฒเชพเชˆเชฅเซ€, เชเชกเชชเชฅเซ€ เช…เชจเซ‡ เชธเชนเซ‡เชฒเชพเชˆเชฅเซ€ เชœเชพเชนเซ‡เชฐ เชฅเชˆ เชœเชพเชฏ เชคเซ‡ เชนเช•เซ€เช•เชคเชจเซ‡ เช•เชพเชฐเชฃเซ‡, เช† เชนเซเชฎเชฒเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชšเซ‹เช•เซเช•เชธ เช•เซเชฒเชพเชฏเชจเซเชŸ เชฎเชพเชŸเซ‡เชจเชพ เช–เชพเชธ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚ เชœ เชฅเชพเชฏ เช›เซ‡.

เชตเชฟเช•เชฒเซเชช ssh-by-key:
เช…เชฎเซ‡ เชเช• เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชต เชฒเชˆเช เช›เซ€เช, เชคเซ‡เชจเชพ เชชเชฐ ssh เชธเชฐเซเชตเชฐ เชฎเชพเชŸเซ‡ เช–เชพเชจเช—เซ€ เช•เซ€ เชฒเช–เซ€เช เช›เซ€เช (เช† เชฎเชพเชŸเซ‡ เชถเชฐเชคเซ‹ เช…เชจเซ‡ เช˜เชฃเซ€ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช˜เซ‹เช‚เช˜เชพเชŸ เช›เซ‡, เชชเชฐเช‚เชคเซ เชนเซเช‚ เชถเซˆเช•เซเชทเชฃเชฟเช• เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชฒเช–เซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚, เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡เชจเซ€ เชธเซ‚เชšเชจเชพเช“ เชจเชนเซ€เช‚).
เช…เชฎเซ‡ เชฎเชถเซ€เชจ เชชเชฐ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€ เช›เซ‹เชกเซ€เช เช›เซ€เช เชœเซเชฏเชพเช‚ ssh เช•เซเชฒเชพเชฏเช‚เชŸ เชนเชถเซ‡ เช…เชจเซ‡ เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เช—เซเชชเซเชค เชชเชฃ เชฐเชพเช–เซ€เช เช›เซ€เช.
เช…เชฎเซ‡ เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชตเชจเซ‡ เชธเชฐเซเชตเชฐ เชชเชฐ เชฒเชพเชตเซ€เช เช›เซ€เช, เชคเซ‡เชจเซ‡ เชฆเชพเช–เชฒ เช•เชฐเซ€เช เช›เซ€เช, เช–เชพเชจเช—เซ€ เช•เซ€เชจเซ€ เชจเช•เชฒ เช•เชฐเซ€เช เช›เซ€เช, เช…เชจเซ‡ เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชตเชจเซ‡ เชฌเชพเชณเซ€ เชจเชพเช–เซ€เช เช›เซ€เช เช…เชจเซ‡ เชฐเชพเช–เชจเซ‡ เชชเชตเชจเชฎเชพเช‚ เชตเซ‡เชฐเชตเชฟเช–เซ‡เชฐ เช•เชฐเซ€เช เช›เซ€เช (เช…เชฅเชตเชพ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชคเซ‡เชจเซ‡ เชถเซ‚เชจเซเชฏ เชธเชพเชฅเซ‡ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช).
เชคเซ‡ เชฌเชงเซ เชœ เช›เซ‡ - เช†เชตเชพ เช“เชชเชฐเซ‡เชถเชจ เชชเช›เซ€ เช†เชตเชพ ssh เช•เชจเซ‡เช•เซเชถเชจเชจเซ‡ เชนเซ‡เช• เช•เชฐเชตเซเช‚ เช…เชถเช•เซเชฏ เชนเชถเซ‡. เช…เชฒเชฌเชคเซเชค, 10 เชตเชฐเซเชทเชฎเชพเช‚ เชธเซเชชเชฐ เช•เซ‹เชฎเซเชชเซเชฏเซเชŸเชฐ เชชเชฐ เชŸเซเชฐเชพเชซเชฟเช• เชœเซ‹เชตเชพเชจเซเช‚ เชถเช•เซเชฏ เชฌเชจเชถเซ‡ - เชชเชฐเช‚เชคเซ เชคเซ‡ เชเช• เช…เชฒเช— เชตเชพเชฐเซเชคเชพ เช›เซ‡.

เชนเซเช‚ เช‘เชซเชŸเซ‹เชชเชฟเช• เชฎเชพเชŸเซ‡ เชฎเชพเชซเซ€ เชฎเชพเช‚เช—เซ เช›เซเช‚.

เชคเซ‡เชฅเซ€ เชนเชตเซ‡ เชฅเชฟเชฏเชฐเซ€ เชœเชพเชฃเซ€เชคเซ€ เช›เซ‡. เชนเซเช‚ เชคเชฎเชจเซ‡ SSL เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชฌเชจเชพเชตเชตเชพเชจเชพ เชชเซเชฐเชตเชพเชน เชตเชฟเชถเซ‡ เช•เชนเซ€เชถ.

"openssl genrsa" เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชฎเซ‡ เชœเชพเชนเซ‡เชฐ เช•เซ€ เชฎเชพเชŸเซ‡ เช–เชพเชจเช—เซ€ เช•เซ€ เช…เชจเซ‡ "เชฌเซเชฒเซ‡เชจเซเช•" เชฌเชจเชพเชตเซ€เช เช›เซ€เช.
เช…เชฎเซ‡ เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท เช•เช‚เชชเชจเซ€เชจเซ‡ "เช–เชพเชฒเซ€ เชœเช—เซเชฏเชพเช“" เชฎเซ‹เช•เชฒเซ€เช เช›เซ€เช, เชœเซ‡เชจเซ‡ เช…เชฎเซ‡ เชธเซŒเชฅเซ€ เชธเชฐเชณ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชฎเชพเชŸเซ‡ เช†เชถเชฐเซ‡ $9 เชšเซ‚เช•เชตเซ€เช เช›เซ€เช.

เชฅเซ‹เชกเชพ เช•เชฒเชพเช•เซ‹ เชชเช›เซ€, เช…เชฎเชจเซ‡ เช† เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท เช•เช‚เชชเชจเซ€ เชคเชฐเชซเชฅเซ€ เช…เชฎเชพเชฐเซ€ "เชœเชพเชนเซ‡เชฐ" เช•เซ€ เช…เชจเซ‡ เช˜เชฃเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€เช“เชจเซ‹ เชธเชฎเซ‚เชน เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡.

เชฎเชพเชฐเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€เชจเซ€ เชจเซ‹เช‚เชงเชฃเซ€ เชฎเชพเชŸเซ‡ เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท เช•เช‚เชชเชจเซ€เช เชถเชพ เชฎเชพเชŸเซ‡ เชšเซ‚เช•เชตเชฃเซ€ เช•เชฐเชตเซ€ เชœเซ‹เชˆเช เชคเซ‡ เชเช• เช…เชฒเช— เชชเซเชฐเชถเซเชจ เช›เซ‡, เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เช…เชนเซ€เช‚ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเชถเซเช‚ เชจเชนเซ€เช‚.

เชนเชตเซ‡ เชคเซ‡ เชธเซเชชเชทเซเชŸ เช›เซ‡ เช•เซ‡ เชถเชฟเชฒเชพเชฒเซ‡เช–เชจเซ‹ เช…เชฐเซเชฅ เชถเซเช‚ เช›เซ‡:

smtpd_tls_key_file=/etc/ssl/domain1.com.2018.key

"/etc/ssl" เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ ssl เชธเชฎเชธเซเชฏเชพเช“ เชฎเชพเชŸเซ‡เชจเซ€ เชฌเชงเซ€ เชซเชพเช‡เชฒเซ‹ เช›เซ‡.
domain1.com โ€” เชกเซ‹เชฎเซ‡เชจ เชจเชพเชฎ.
2018 เช•เซ€ เชฐเชšเชจเชพเชจเซเช‚ เชตเชฐเซเชท เช›เซ‡.
"เช•เซ€" - เชนเซ‹เชฆเซเชฆเซ‹ เช•เซ‡ เชซเชพเช‡เชฒ เช–เชพเชจเช—เซ€ เช•เซ€ เช›เซ‡.

เช…เชจเซ‡ เช† เชซเชพเช‡เชฒเชจเซ‹ เช…เชฐเซเชฅ:

smtpd_tls_cert_file=/etc/ssl/domain1.com.2018.chained.crt
domain1.com โ€” เชกเซ‹เชฎเซ‡เชจ เชจเชพเชฎ.
2018 เช•เซ€ เชฐเชšเชจเชพเชจเซเช‚ เชตเชฐเซเชท เช›เซ‡.
เชธเชพเช‚เช•เชณเซ‹ - เชนเซ‹เชฆเซเชฆเซ‹ เช•เซ‡ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€เชจเซ€ เชธเชพเช‚เช•เชณ เช›เซ‡ (เชชเซเชฐเชฅเชฎ เช…เชฎเชพเชฐเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€ เช›เซ‡ เช…เชจเซ‡ เชฌเชพเช•เซ€เชจเซ€ เชคเซ‡ เช•เช‚เชชเชจเซ€ เช›เซ‡ เชœเซ‡เชฃเซ‡ เชœเชพเชนเซ‡เชฐ เช•เซ€ เชœเชพเชฐเซ€ เช•เชฐเซ€ เช›เซ‡).
เชธเซ€เช†เชฐเชŸเซ€ - เชนเซ‹เชฆเซเชฆเซ‹ เช•เซ‡ เชคเซเชฏเชพเช‚ เชคเซˆเชฏเชพเชฐ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เช›เซ‡ (เชคเช•เชจเซ€เช•เซ€ เชธเซเชชเชทเซเชŸเชคเชพ เชธเชพเชฅเซ‡ เชœเชพเชนเซ‡เชฐ เช•เซ€).

smtp_bind_address = XX.XX.XX.X0
smtp_bind_address6 = XXXX:XXXX:XXXX:XXXX:1:1:1:1

เช† เชธเซ‡เชŸเชฟเช‚เช— เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเซ€ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ เชฒเช–เชพเชฏเซ‡เชฒ เช›เซ‡.

เช•เชพเชฐเชฃ เช•เซ‡ เช† เชชเชฐเชฟเชฎเชพเชฃเชฎเชพเช‚ เชญเซ‚เชฒเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชคเชฎเชพเชฐเชพ เชธเชฐเซเชตเชฐเชฎเชพเช‚เชฅเซ€ เชธเซเชชเชพเชฎ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ (เชคเชฎเชพเชฐเซ€ เช‡เชšเซเช›เชพ เชตเชฟเชจเชพ).

เชชเช›เซ€ เชฆเชฐเซ‡เช•เชจเซ‡ เชธเชพเชฌเชฟเชค เช•เชฐเซ‹ เช•เซ‡ เชคเชฎเซ‡ เชฆเซ‹เชทเชฟเชค เชจเชฅเซ€.

recipient_delimiter = +

เช˜เชฃเชพ เชฒเซ‹เช•เซ‹ เช•เชฆเชพเชš เชœเชพเชฃเชคเชพ เชจ เชนเซ‹เชฏ, เชชเชฐเช‚เชคเซ เช† เชฐเซ‡เชจเซเช•เชฟเช‚เช— เชˆเชฎเซ‡เชฒ เชฎเชพเชŸเซ‡เชจเซเช‚ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชชเชพเชคเซเชฐ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เช†เชงเซเชจเชฟเช• เชฎเซ‡เชˆเชฒ เชธเชฐเซเชตเชฐเซเชธ เชฆเซเชตเชพเชฐเชพ เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เช›เซ‡.

เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฎเซ‡เชˆเชฒเชฌเซ‹เช•เซเชธ เช›เซ‡ "[เช‡เชฎเซ‡เช‡เชฒ เชธเซเชฐเช•เซเชทเชฟเชค]"เชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹"[เช‡เชฎเซ‡เช‡เชฒ เชธเซเชฐเช•เซเชทเชฟเชค]"- เชœเซเช“ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชถเซเช‚ เช†เชตเซ‡ เช›เซ‡.

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

เช…เชนเซ€เช‚ เช…เชฎเซ‡ เชธเซเชชเชทเซเชŸ เช•เชฐเซ€เช เช›เซ€เช เช•เซ‡ เชคเชฎเชพเชฎ เช‡เชจเช•เชฎเชฟเช‚เช— เชฎเซ‡เช‡เชฒ เชกเชตเช•เซ‹เชŸ เชชเชฐ เชœเชพเชฏ เช›เซ‡.
เช…เชจเซ‡ เชกเซ‹เชฎเซ‡เชจ, เชฎเซ‡เช‡เชฒเชฌเซ‹เช•เซเชธ, เช‰เชชเชจเชพเชฎ เชฎเชพเชŸเซ‡เชจเชพ เชจเชฟเชฏเชฎเซ‹ - เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชœเซเช“.

/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

เชนเชตเซ‡ เชชเซ‹เชธเซเชŸเชซเชฟเช•เซเชธ เชœเชพเชฃเซ‡ เช›เซ‡ เช•เซ‡ เชกเซ‹เชตเช•เซ‹เชŸ เชธเชพเชฅเซ‡ เช…เชงเชฟเช•เซƒเชคเชคเชพ เชชเช›เซ€ เชœ เชตเชงเซ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซ‡เช‡เชฒ เชธเซเชตเซ€เช•เชพเชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชนเซเช‚ เช–เชฐเซ‡เช–เชฐ เชธเชฎเชœเซ€ เชถเช•เชคเซ‹ เชจเชฅเซ€ เช•เซ‡ เช† เช…เชนเซ€เช‚ เชถเชพ เชฎเชพเชŸเซ‡ เชกเซเชชเซเชฒเชฟเช•เซ‡เชŸ เช›เซ‡. "เชตเชฐเซเชšเซเชฏเซเช…เชฒ_เชŸเซเชฐเชพเชจเซเชธเชชเซ‹เชฐเซเชŸ" เชฎเชพเช‚ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เชคเซ‡ เชฌเชงเซเช‚ เช…เชฎเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชธเซเชชเชทเซเชŸ เช•เชฐเซ€ เชฆเซ€เชงเซเช‚ เช›เซ‡.

เชชเชฐเช‚เชคเซ เชชเซ‹เชธเซเชŸเชซเชฟเช•เซเชธ เชธเชฟเชธเซเชŸเชฎ เช–เซ‚เชฌ เชœ เชœเซ‚เชจเซ€ เช›เซ‡ - เช•เชฆเชพเชš เชคเซ‡ เชœเซ‚เชจเชพ เชฆเชฟเชตเชธเซ‹เชฅเซ€ เชฅเซเชฐเซ‹เชฌเซ‡เช• เช›เซ‡.

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:

เชกเชพเชฌเซ€ เชฌเชพเชœเซเช เชจเชฟเชฏเชฎเชฟเชค เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเช“ เช›เซ‡. เชœเชฎเชฃเซ€ เชฌเชพเชœเซเช เชเช• เชฒเซ‡เชฌเชฒ เช›เซ‡ เชœเซ‡ เช…เช•เซเชทเชฐเชจเซ‡ เชšเชฟเชนเซเชจเชฟเชค เช•เชฐเซ‡ เช›เซ‡.
เชฒเซ‡เชฌเชฒ เช…เชจเซเชธเชพเชฐ เชชเซ‹เชธเซเชŸเชซเชฟเช•เซเชธ - เชšเซ‹เช•เซเช•เชธ เช…เช•เซเชทเชฐ เชฎเชพเชŸเซ‡ เชฅเซ‹เชกเซ€ เชตเชงเซ เช—เซ‹เช เชตเชฃเซ€ เชฐเซ‡เช–เชพเช“ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชถเซ‡.

เชšเซ‹เช•เซเช•เชธ เช…เช•เซเชทเชฐ เชฎเชพเชŸเซ‡ เชชเซ‹เชธเซเชŸเชซเชฟเช•เซเชธ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชซเชฐเซ€เชฅเซ€ เช—เซ‹เช เชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เชคเซ‡ โ€œmaster.cfโ€ เชฎเชพเช‚ เชธเซ‚เชšเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เชฒเซ€เชŸเซ€เช“ 4, 5, 6 เชฎเซเช–เซเชฏ เช›เซ‡. เช…เชฎเซ‡ เช•เชฏเชพ เชกเซ‹เชฎเซ‡เชจ เชตเชคเซ€ เชชเชคเซเชฐ เชฎเซ‹เช•เชฒเซ€เช เช›เซ€เช, เช…เชฎเซ‡ เช† เชฒเซ‡เชฌเชฒ เชฎเซ‚เช•เซ€เช เช›เซ€เช.
เชชเชฐเช‚เชคเซ เชœเซ‚เชจเชพ เช•เซ‹เชกเชฎเชพเช‚ PHP เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธเชฎเชพเช‚ "เชซเซเชฐเซ‹เชฎ" เชซเซ€เชฒเซเชก เชนเช‚เชฎเซ‡เชถเชพ เชธเซ‚เชšเชตเชตเชพเชฎเชพเช‚ เช†เชตเชคเซเช‚ เชจเชฅเซ€. เชชเช›เซ€ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชจเชพเชฎ เชฌเชšเชพเชตเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชฒเซ‡เช– เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชตเซเชฏเชพเชชเช• เช›เซ‡ - เชนเซเช‚ nginx+fpm เชธเซ‡เชŸ เช•เชฐเซ€เชจเซ‡ เชตเชฟเชšเชฒเชฟเชค เชฅเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชจเชฅเซ€.

เชธเช‚เช•เซเชทเชฟเชชเซเชคเชฎเชพเช‚, เชฆเชฐเซ‡เช• เชธเชพเช‡เชŸ เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ เชคเซ‡เชจเชพ เชชเซ‹เชคเชพเชจเชพ เชฒเชฟเชจเช•เซเชธ-เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฎเชพเชฒเชฟเช•เชจเซ‡ เชธเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช. เช…เชจเซ‡ เชคเซ‡ เชฎเซเชœเชฌ เชคเชฎเชพเชฐเซเช‚ fpm-เชชเซ‚เชฒ.

Fpm-pool php เชจเชพ เช•เซ‹เชˆเชชเชฃ เชธเช‚เชธเซเช•เชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ (เชœเซเชฏเชพเชฐเซ‡ เชคเซ‡ เชœ เชธเชฐเซเชตเชฐ เชชเชฐ เชคเชฎเซ‡ php เชจเชพ เชตเชฟเชตเชฟเชง เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชชเชกเซ‹เชถเซ€ เชธเชพเช‡เชŸเซเชธ เชฎเชพเชŸเซ‡ เชธเชฎเชธเซเชฏเชพ เชตเชฟเชจเชพ เช…เชฒเช— php.ini เชชเชฃ เชตเชพเชชเชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡ เชธเชฐเชธ เช›เซ‡).

เชคเซ‡เชฅเซ€, เชšเซ‹เช•เซเช•เชธ เชฒเชฟเชจเช•เซเชธ-เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ "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}

เช† เชธเซเชชเชพเชฎเชพเชธเชพเชธเซ€เชจ เชธเช‚เชฌเช‚เชงเชฟเชค เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เช›เซ‡, เชคเซ‡เชจเชพ เชชเชฐ เชชเช›เซ€เชฅเซ€ เชตเชงเซ.

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 เชเชกเซเชฐเซ‡เชธ เชฆเซเชตเชพเชฐเชพ เชธเซเชŸเซเชฐเชฟเช‚เช— เชฎเซ‡เชณเชตเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช›เซ‡.
เช…เชจเซ‡ เชฎเซ‡เช‡เชฒ เชฎเชพเชŸเซ‡, เช† เชธเซเชตเชฟเชงเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชชเซเชทเซเชŸเชฟ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡ เช•เซ‡ เชนเซ‡เชฒเซ‹ เช เชธเชฐเชจเชพเชฎเชพเช‚เชจเชพ rDNS เชธเชพเชฅเซ‡ เชฌเชฐเชพเชฌเชฐ เชฎเซ‡เชณ เช–เชพเชฏ เช›เซ‡ เชœเซ‡เชฎเชพเช‚เชฅเซ€ เช‡เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹.

เชœเซ‹ เชนเซ‡เชฒเซ‹ เช เช‡เชฎเซ‡เช‡เชฒ เชกเซ‹เชฎเซ‡เชจ เชธเชพเชฅเซ‡ เชฎเซ‡เชณ เช–เชพเชคเซ‹ เชจเชฅเซ€ เช•เซ‡ เชœเซ‡เชจเชพ เชตเชคเซ€ เชชเชคเซเชฐ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹, เชคเซ‹ เชธเซเชชเชพเชฎ เชชเซ‹เชˆเชจเซเชŸ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

Helo rDNS เชธเชพเชฅเซ‡ เชฎเซ‡เชณ เช–เชพเชคเซ‹ เชจเชฅเซ€ - เช˜เชฃเชพ เชฌเชงเชพ เชธเซเชชเชพเชฎ เชชเซ‹เชˆเชจเซเชŸ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
เชคเชฆเชจเซเชธเชพเชฐ, เชฆเชฐเซ‡เช• เชกเซ‹เชฎเซ‡เชจเชจเซเช‚ เชชเซ‹เชคเชพเชจเซเช‚ IP เชธเชฐเชจเชพเชฎเซเช‚ เชนเซ‹เชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡.
OVH เชฎเชพเชŸเซ‡ - เช•เชจเซเชธเซ‹เชฒเชฎเชพเช‚ rDNS เชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเชตเซ‹ เชถเช•เซเชฏ เช›เซ‡.
tech.ru เชฎเชพเชŸเซ‡ - เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เชฆเซเชตเชพเชฐเชพ เช‰เช•เซ‡เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
AWS เชฎเชพเชŸเซ‡, เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เชฆเซเชตเชพเชฐเชพ เช‰เช•เซ‡เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
โ€œinet_protocolsโ€ เช…เชจเซ‡ โ€œsmtp_bind_address6โ€ - เช…เชฎเซ‡ IPv6 เชธเชชเซ‹เชฐเซเชŸเชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเซ€เช เช›เซ€เช.
IPv6 เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ rDNS เชฐเชœเซ€เชธเซเชŸเชฐ เช•เชฐเชตเชพเชจเซ€ เชชเชฃ เชœเชฐเซ‚เชฐ เช›เซ‡.
"syslog_name" - เช…เชจเซ‡ เช† เชฒเซ‹เช— เชตเชพเช‚เชšเชตเชพเชฎเชพเช‚ เชธเชฐเชณเชคเชพ เชฎเชพเชŸเซ‡ เช›เซ‡.

เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เช–เชฐเซ€เชฆเซ‹ เชนเซเช‚ เช…เชนเซ€เช‚ เชญเชฒเชพเชฎเชฃ เช•เชฐเซเช‚ เช›เซเช‚.

เชชเซ‹เชธเซเชŸเชซเชฟเช•เซเชธ+เชกเซ‹เชตเช•เซ‹เชŸ เชฒเชฟเช‚เช• เช…เชนเซ€เช‚ เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡.

เชเชธเชชเซ€เชเชซ เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡.

============== เช•เชฌเซ‚เชคเชฐ =============

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 เชœเชฐเซ‚เชฐเซ€ เช›เซ‡.
เช…เชจเซ‡ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชชเซ‹เชคเซ‡. เช…เชจเซ‡ เชเช• เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชตเชฟเช—เชค เช "เชธเซเชฅเชพเชจเชฟเช•" เชจเชฟเชฐเซเชฆเซ‡เชถ เช›เซ‡. เช•เชฏเชพ เชธเซเชฅเชพเชจเชฟเช• 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
}

เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เชธเซเชชเชพเชฎเชพเชธเชพเชธเชฟเชจ เชฎเชพเชŸเซ‡ เช†เชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.

เชซเชพเช‡เชฒ "/etc/dovecot/conf.d/20-imap.conf"

protocol imap {
  mail_plugins = $mail_plugins antispam
}

เช† เชเช• เชเชจเซเชŸเชฟเชธเซเชชเชพเชฎ เชชเซเชฒเช—เช‡เชจ เช›เซ‡. "เชธเซเชชเชพเชฎ" เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚/เชฎเชพเช‚เชฅเซ€ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เชธเชฎเชฏเซ‡ เชธเซเชชเชพเชฎเชพเชธเชพเชธเซ€เชจเชจเซ‡ เชคเชพเชฒเซ€เชฎ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡.

เชซเชพเช‡เชฒ "/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
}

เชธเซเชชเชพเชฎ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚/เชฅเซ€ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เชธเชฎเชฏเซ‡ เชธเซเชชเชพเชฎเชพเชธเชพเชธเชฟเชจ เชคเชพเชฒเซ€เชฎ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ.

เชซเชพเช‡เชฒ "/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';

เช† เชชเซ‹เชธเซเชŸเชซเชฟเช•เซเชธ เชฎเชพเชŸเซ‡ เชธเชฎเชพเชจ เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชจเซ‡ เช…เชจเซเชฐเซ‚เชช เช›เซ‡.

เชซเชพเช‡เชฒ "/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

เช…เชฎเซ‡ เชฒเซ‹เชก เชฅเชตเชพ เชชเชฐ เช“เชŸเซ‹-เชฒเซ‹เชกเชฟเช‚เช— เชธเซเชชเชพเชฎเชพเชธเชพเชธเชฟเชจ เชธเซ‡เชตเชพเชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเซ€เช เช›เซ€เช.

เชซเชพเช‡เชฒ "/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" เชชเชพเชธเชตเชฐเซเชก "เชชเชพเชธเชตเชฐเซเชก" เชธเชพเชฅเซ‡ (เชชเชฐเซเชฏเชพเชชเซเชค เช•เช‚เชˆเช• เชธเชพเชฅเซ‡ เชฌเชฆเชฒเซ‹).

report_safe - เช† เชชเชคเซเชฐเชจเซ‡ เชฌเชฆเชฒเซ‡ เชธเซเชชเชพเชฎ เชˆเชฎเซ‡เชฒเชจเซ‹ เชฐเชฟเชชเซ‹เชฐเซเชŸ เชฎเซ‹เช•เชฒเชถเซ‡.
use_bayes spamassassin เชฎเชถเซ€เชจ เชฒเชฐเซเชจเชฟเช‚เช— เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เช›เซ‡.

เชฌเชพเช•เซ€เชจเซ€ เชธเซเชชเชพเชฎเชพเชธเชพเชธเชฟเชจ เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฒเซ‡เช–เชฎเชพเช‚ เช…เช—เชพเช‰ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹.

เชธเชพเชฎเชพเชจเซเชฏ เชธเซ‡เชŸเชฟเช‚เช— "เชธเซเชชเชพเชฎเชพเชธเซ‡เชธเชฟเชจ".
เชจเชตเชพ เชธเซเชชเชพเชฎ เช‡เชฎเซ‡เช‡เชฒเซเชธเชจเซ‡ IMAP โ€œเชธเซเชชเชพเชฎโ€ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เช–เชธเซ‡เชกเชตเชพ เชตเชฟเชถเซ‡.
Dovecot + SpamAssassin เชจเชพ เชธเชฐเชณ เชธเช‚เชฏเซ‹เชœเชจ เชตเชฟเชถเซ‡.
เช‡เชฎเซ…เชช เชซเซ‹เชฒเซเชกเชฐเซเชธเชฎเชพเช‚ เช…เช•เซเชทเชฐเซ‹ เช–เชธเซ‡เชกเชคเซ€ เชตเช–เชคเซ‡ เชนเซเช‚ เชธเซเชชเชพเชฎเชพเชธเชพเชธเชฟเชจ เชฒเชฐเซเชจเชฟเช‚เช— เชฅเชฟเชฏเชฐเซ€ เชตเชพเช‚เชšเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเซเช‚ เช›เซเช‚ (เช…เชจเซ‡ เชนเซเช‚ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเชคเซ‹ เชจเชฅเซ€).

============= เชธเชฎเซเชฆเชพเชฏเชจเซ‡ เช…เชชเซ€เชฒ =============

เชซเซ‹เชฐเชตเชฐเซเชก เช•เชฐเซ‡เชฒเชพ เชชเชคเซเชฐเซ‹เชจเซ€ เชธเซเชฐเช•เซเชทเชพเชจเซเช‚ เชธเซเชคเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชตเชงเชพเชฐเชตเซเช‚ เชคเซ‡ เช…เช‚เช—เซ‡ เชนเซเช‚ เชธเชฎเซเชฆเชพเชฏเชฎเชพเช‚ เชเช• เชตเชฟเชšเชพเชฐ เชซเซ‡เช‚เช•เชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚. เช•เชพเชฐเชฃ เช•เซ‡ เชนเซเช‚ เชฎเซ‡เช‡เชฒเชจเชพ เชตเชฟเชทเชฏเชฎเชพเช‚ เช–เซ‚เชฌ เชœ เชกเซ‚เชฌเซ€ เช—เชฏเซ‹ เช›เซเช‚.

เชœเซ‡เชฅเซ€ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชคเซ‡เชจเชพ เช•เซเชฒเชพเชฏเชจเซเชŸ (เช†เช‰เชŸเชฒเซเช•, เชฅเช‚เชกเชฐเชฌเชฐเซเชก, เชฌเซเชฐเชพเช‰เชเชฐ-เชชเซเชฒเช—เช‡เชจ, ...) เชชเชฐ เช•เซ€เชจเซ€ เชœเซ‹เชกเซ€ เชฌเชจเชพเชตเซ€ เชถเช•เซ‡. เชœเชพเชนเซ‡เชฐ เช…เชจเซ‡ เช–เชพเชจเช—เซ€. เชธเชพเชฐเซเชตเชœเชจเชฟเช• - DNS เชชเชฐ เชฎเซ‹เช•เชฒเซ‹. เช–เชพเชจเช—เซ€ - เช•เซเชฒเชพเชฏเช‚เชŸ เชชเชฐ เชธเชพเชšเชตเซ‹. เชฎเซ‡เช‡เชฒ เชธเชฐเซเชตเชฐเซเชธ เชšเซ‹เช•เซเช•เชธ เชชเซเชฐเชพเชชเซเชคเช•เชฐเซเชคเชพเชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชถเซ‡.

เช…เชจเซ‡ เช†เชตเชพ เช…เช•เซเชทเชฐเซ‹ เชธเชพเชฅเซ‡ เชธเซเชชเชพเชฎ เชธเชพเชฎเซ‡ เชฐเช•เซเชทเชฃ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ (เชนเชพ, เชฎเซ‡เช‡เชฒ เชธเชฐเซเชตเชฐ เชธเชพเชฎเช—เซเชฐเซ€ เชœเซ‹เชˆ เชถเช•เชถเซ‡ เชจเชนเซ€เช‚) - เชคเชฎเชพเชฐเซ‡ 3 เชจเชฟเชฏเชฎเซ‹ เชฐเชœเซ‚ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡:

  1. เชซเชฐเชœเชฟเชฏเชพเชค เชตเชพเชธเซเชคเชตเชฟเช• DKIM เชธเชนเซ€, เชซเชฐเชœเชฟเชฏเชพเชค SPF, เชซเชฐเชœเชฟเชฏเชพเชค rDNS.
  2. เชเชจเซเชŸเชฟเชธเซเชชเชพเชฎ เชคเชพเชฒเซ€เชฎ เชตเชฟเชทเชฏ เชชเชฐ เชจเซเชฏเซเชฐเชฒ เชจเซ‡เชŸเชตเชฐเซเช• + เช•เซเชฒเชพเชฏเช‚เชŸ เชฌเชพเชœเซ เชชเชฐ เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช.
  3. เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจ เชเชฒเซเช—เซ‹เชฐเชฟเชงเชฎ เชเชตเซเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช เช•เซ‡ เชฎเซ‹เช•เชฒเชจเชพเชฐ เชฌเชพเชœเซเช เชชเซเชฐเชพเชชเซเชค เชฌเชพเชœเซ เช•เชฐเชคเชพเช‚ เชเชจเซเช•เซเชฐเชฟเชชเซเชถเชจ เชชเชฐ 100 เช—เชฃเซ‹ เชตเชงเซ CPU เชชเชพเชตเชฐ เช–เชฐเซเชš เช•เชฐเชตเซ‹ เชœเซ‹เชˆเช.

เชœเชพเชนเซ‡เชฐ เชชเชคเซเชฐเซ‹ เช‰เชชเชฐเชพเช‚เชค, "เชธเซเชฐเช•เซเชทเชฟเชค เชชเชคเซเชฐเชตเซเชฏเชตเชนเชพเชฐ เชถเชฐเซ‚ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡" เชฎเชพเชจเช• เชฆเชฐเช–เชพเชธเซเชค เชชเชคเซเชฐ เชตเชฟเช•เชธเชพเชตเซ‹. เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชฎเชพเช‚เชฅเซ€ เชเช• (เชฎเซ‡เชฒเชฌเซ‹เช•เซเชธ) เชฌเซ€เชœเชพ เชฎเซ‡เช‡เชฒเชฌเซ‹เช•เซเชธเชฎเชพเช‚ เชœเซ‹เชกเชพเชฃ เชธเชพเชฅเซ‡เชจเซ‹ เชชเชคเซเชฐ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡. เชชเชคเซเชฐเชฎเชพเช‚ เชชเชคเซเชฐเชตเซเชฏเชตเชนเชพเชฐ เชฎเชพเชŸเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เชธเช‚เชฆเซ‡เชถเชพเชตเซเชฏเชตเชนเชพเชฐ เชšเซ‡เชจเชฒ เชถเชฐเซ‚ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชŸเซ‡เช•เซเชธเซเชŸ เชฆเชฐเช–เชพเชธเซเชค เช…เชจเซ‡ เชฎเซ‡เช‡เชฒเชฌเซ‹เช•เซเชธเชจเชพ เชฎเชพเชฒเชฟเช•เชจเซ€ เชœเชพเชนเซ‡เชฐ เช•เซ€ (เช•เซเชฒเชพเชฏเชจเซเชŸ เชฌเชพเชœเซ เชชเชฐ เช–เชพเชจเช—เซ€ เช•เซ€ เชธเชพเชฅเซ‡) เชถเชพเชฎเซ‡เชฒ เช›เซ‡.

เชคเชฎเซ‡ เชฆเชฐเซ‡เช• เชชเชคเซเชฐเชตเซเชฏเชตเชนเชพเชฐ เชฎเชพเชŸเซ‡ เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เช•เซ‡เชŸเชฒเซ€เช• เชšเชพเชตเซ€เช“ เชชเชฃ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹. เชชเซเชฐเชพเชชเซเชคเช•เชฐเซเชคเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช† เช“เชซเชฐ เชธเซเชตเซ€เช•เชพเชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€ เชฎเซ‹เช•เชฒเซ€ เชถเช•เซ‡ เช›เซ‡ (เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เช† เชชเชคเซเชฐเชตเซเชฏเชตเชนเชพเชฐ เชฎเชพเชŸเซ‡ เชชเชฃ เชฌเชจเชพเชตเซ‡เชฒ เช›เซ‡). เช†เช—เชณ, เชชเซเชฐเชฅเชฎ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชธเซ‡เชตเชพ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชชเชคเซเชฐ (เชฌเซ€เชœเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€ เชธเชพเชฅเซ‡ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸเซ‡เชก) เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡ - เชœเซ‡เชจเซ€ เชชเซเชฐเชพเชชเซเชคเชฟ เชชเชฐ เชฌเซ€เชœเซ‹ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฐเชšเชพเชฏเซ‡เชฒ เชธเช‚เชšเชพเชฐ เชšเซ‡เชจเชฒเชจเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชฎเชพเชจเซ€ เชถเช•เซ‡ เช›เซ‡. เช†เช—เชณ, เชฌเซ€เชœเซ‹ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชชเชคเซเชฐ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡ - เช…เชจเซ‡ เชชเช›เซ€ เชชเซเชฐเชฅเชฎ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชชเชฃ เชฐเชšเชพเชฏเซ‡เชฒเซ€ เชšเซ‡เชจเชฒเชจเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เช—เชฃเซ€ เชถเช•เซ‡ เช›เซ‡.

เชฐเชธเซเชคเชพ เชชเชฐเชจเซ€ เชšเชพเชตเซ€เช“เชจเชพ เชตเชฟเช•เซเชทเซ‡เชชเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชฎเชพเช‚ เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชตเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซ€ เชเช• เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€เชจเซ‡ เชชเซเชฐเชธเชพเชฐเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชธเช‚เชญเชพเชตเชจเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเซ€ เช†เชตเชถเซเชฏเช• เช›เซ‡.

เช…เชจเซ‡ เชธเซŒเชฅเซ€ เชฎเชนเชคเซเชตเชจเซ€ เชฌเชพเชฌเชค เช เช›เซ‡ เช•เซ‡ เชคเซ‡ เชฌเชงเซเช‚ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ (เชชเซเชฐเชถเซเชจ เช เช›เซ‡ เช•เซ‡ "เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชฃ เชšเซ‚เช•เชตเชฃเซ€ เช•เชฐเชถเซ‡?"):
10 เชตเชฐเซเชท เชฎเชพเชŸเซ‡ $3 เชฅเซ€ เชถเชฐเซ‚ เชฅเชคเชพ เชชเซ‹เชธเซเชŸเชฒ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชฆเชพเช–เชฒ เช•เชฐเซ‹. เชœเซ‡ เชชเซเชฐเซ‡เชทเช•เชจเซ‡ dns เชฎเชพเช‚ เชธเซ‚เชšเชตเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเชถเซ‡ เช•เซ‡ "เชฎเชพเชฐเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชšเชพเชตเซ€เช“ เชคเซเชฏเชพเช‚ เช›เซ‡." เช…เชจเซ‡ เชคเซ‡เช“ เชคเชฎเชจเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เช•เชจเซ‡เช•เซเชถเชจ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ€ เชคเช• เช†เชชเชถเซ‡. เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, เช†เชตเชพ เชœเซ‹เชกเชพเชฃเซ‹ เชธเซเชตเซ€เช•เชพเชฐเชตเชพเชจเซเช‚ เชฎเชซเชค เช›เซ‡.
เชœเซ€เชฎเซ‡เชฒ เช†เช–เชฐเซ‡ เชคเซ‡เชจเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซเช‚ เชฎเซเชฆเซเชฐเซ€เช•เชฐเชฃ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡. 10 เชตเชฐเซเชท เชฆเซ€เช  $3 เชฎเชพเชŸเซ‡ - เชธเซเชฐเช•เซเชทเชฟเชค เชชเชคเซเชฐเชตเซเชฏเชตเชนเชพเชฐ เชšเซ‡เชจเชฒเซ‹ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เช…เชงเชฟเช•เชพเชฐ.

============= เชจเชฟเชทเซเช•เชฐเซเชท =============

เช†เช–เชพ เชฒเซ‡เช–เชจเซ‡ เชšเช•เชพเชธเชตเชพ เชฎเชพเชŸเซ‡, เชนเซเช‚ เชเช• เชฎเชนเชฟเชจเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชชเชฟเชค เชธเชฐเซเชตเชฐ เชญเชพเชกเซ‡ เชฒเซ‡เชตเชพ เชœเชˆ เชฐเชนเซเชฏเซ‹ เชนเชคเซ‹ เช…เชจเซ‡ SSL เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชธเชพเชฅเซ‡ เชกเซ‹เชฎเซ‡เชจ เช–เชฐเซ€เชฆเชตเชพ เชœเชˆ เชฐเชนเซเชฏเซ‹ เชนเชคเซ‹.

เชชเชฐเช‚เชคเซ เชœเซ€เชตเชจ เชธเช‚เชœเซ‹เช—เซ‹ เชตเชฟเช•เชธเชฟเชค เชฅเชฏเชพ เชคเซ‡เชฅเซ€ เช† เชฎเซเชฆเซเชฆเซ‹ 2 เชฎเชนเชฟเชจเชพ เชธเซเชงเซ€ เช–เซ‡เช‚เชšเชพเชฏเซ‹.
เช…เชจเซ‡ เชคเซ‡เชฅเซ€, เชœเซเชฏเชพเชฐเซ‡ เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชซเชฐเซ€เชฅเซ€ เช–เชพเชฒเซ€ เชธเชฎเชฏ เชนเชคเซ‹, เชคเซเชฏเชพเชฐเซ‡ เชฎเซ‡เช‚ เชชเซเชฐเช•เชพเชถเชจเชจเซ‡ เชตเชงเซ เชเช• เชตเชฐเซเชท เชธเซเชงเซ€ เช–เซ‡เช‚เชšเซ€ เชฒเซ‡เชตเชพเชจเชพ เชœเซ‹เช–เชฎเชจเซ‡ เชฌเชฆเชฒเซ‡ เชฒเซ‡เช–เชจเซ‡ เชœเซ‡เชฎ เช›เซ‡ เชคเซ‡เชฎ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚.

เชœเซ‹ เชคเซเชฏเชพเช‚ เช˜เชฃเชพ เชฌเชงเชพ เชชเซเชฐเชถเซเชจเซ‹ เช›เซ‡ เชœเซ‡เชฎ เช•เซ‡ "เชชเชฐเช‚เชคเซ เช†เชจเซเช‚ เชชเชฐเซเชฏเชพเชชเซเชค เชตเชฟเช—เชคเชตเชพเชฐ เชตเชฐเซเชฃเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชจเชฅเซ€", เชคเซ‹ เชชเช›เซ€ เชจเชตเชพ เชกเซ‹เชฎเซ‡เชจ เช…เชจเซ‡ เชจเชตเชพ SSL เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชธเชพเชฅเซ‡ เชธเชฎเชฐเซเชชเชฟเชค เชธเชฐเซเชตเชฐ เชฒเซ‡เชตเชพเชจเซ€ เช…เชจเซ‡ เชคเซ‡เชจเซเช‚ เชตเชงเซ เชตเชฟเช—เชคเชตเชพเชฐ เชตเชฐเซเชฃเชจ เช•เชฐเชตเชพเชจเซ€ เชถเช•เซเชคเชฟ เชนเชถเซ‡ เช…เชจเซ‡, เชฎเซ‹เชŸเชพ เชญเชพเช—เชจเชพ เช…เช—เชคเซเชฏเชจเซ€ เชฐเซ€เชคเซ‡, เช–เซ‚เชŸเชคเซ€ เชคเชฎเชพเชฎ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชตเชฟเช—เชคเซ‹เชจเซ‡ เช“เชณเช–เซ‹.

เชนเซเช‚ เชชเซ‹เชธเซเชŸเชฒ เชธเชฐเซเชŸเชฟเชซเชฟเช•เซ‡เชŸ เชตเชฟเชถเซ‡เชจเชพ เชตเชฟเชšเชพเชฐเซ‹ เชชเชฐ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชชเชฃ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚. เชœเซ‹ เชคเชฎเชจเซ‡ เชตเชฟเชšเชพเชฐ เช—เชฎเซเชฏเซ‹ เชนเซ‹เชฏ, เชคเซ‹ เชนเซเช‚ rfc เชฎเชพเชŸเซ‡ เชกเซเชฐเชพเชซเซเชŸ เชฒเช–เชตเชพเชจเซ€ เชคเชพเช•เชพเชค เชถเซ‹เชงเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชคเซเชจ เช•เชฐเซ€เชถ.

เชฒเซ‡เช–เชจเชพ เชฎเซ‹เชŸเชพ เชญเชพเช—เชจเซ€ เชจเช•เชฒ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เช† เชฒเซ‡เช–เชจเซ€ เชฒเชฟเช‚เช• เช†เชชเซ‹.
เช…เชจเซเชฏ เช•เซ‹เชˆเชชเชฃ เชญเชพเชทเชพเชฎเชพเช‚ เช…เชจเซเชตเชพเชฆ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เช† เชฒเซ‡เช–เชจเซ€ เชฒเชฟเช‚เช• เช†เชชเซ‹.
เชนเซเช‚ เชคเซ‡เชจเซ‡ เชœเชพเชคเซ‡ เช…เช‚เช—เซเชฐเซ‡เชœเซ€เชฎเชพเช‚ เช…เชจเซเชตเชพเชฆเชฟเชค เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชคเซเชจ เช•เชฐเซ€เชถ เช…เชจเซ‡ เช•เซเชฐเซ‹เชธ-เชฐเซ‡เชซเชฐเชจเซเชธ เช›เซ‹เชกเซ€เชถ.


เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹