Debian + Postfix + Dovecot + Multidomain + SSL + IPv6 + OpenVPN + ಮಲ್ಟಿ-ಇಂಟರ್‌ಫೇಸ್‌ಗಳು + SpamAssassin-learn + Bind

ಈ ಲೇಖನವು ಆಧುನಿಕ ಮೇಲ್ ಸರ್ವರ್ ಅನ್ನು ಹೇಗೆ ಹೊಂದಿಸುವುದು ಎಂಬುದರ ಕುರಿತು.
ಪೋಸ್ಟ್ಫಿಕ್ಸ್ + ಡವ್ಕೋಟ್. SPF + DKIM + rDNS. IPv6 ಜೊತೆಗೆ.
TSL ಗೂಢಲಿಪೀಕರಣದೊಂದಿಗೆ. ಬಹು ಡೊಮೇನ್‌ಗಳಿಗೆ ಬೆಂಬಲದೊಂದಿಗೆ - ನಿಜವಾದ SSL ಪ್ರಮಾಣಪತ್ರದೊಂದಿಗೆ ಭಾಗ.
ಆಂಟಿಸ್ಪ್ಯಾಮ್ ರಕ್ಷಣೆ ಮತ್ತು ಇತರ ಮೇಲ್ ಸರ್ವರ್‌ಗಳಿಂದ ಹೆಚ್ಚಿನ ಆಂಟಿಸ್ಪ್ಯಾಮ್ ರೇಟಿಂಗ್‌ನೊಂದಿಗೆ.
ಬಹು ಭೌತಿಕ ಇಂಟರ್ಫೇಸ್ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ.
OpenVPN ನೊಂದಿಗೆ, ಸಂಪರ್ಕವು IPv4 ಮೂಲಕ ಮತ್ತು IPv6 ಅನ್ನು ಒದಗಿಸುತ್ತದೆ.

ನೀವು ಈ ಎಲ್ಲಾ ತಂತ್ರಜ್ಞಾನಗಳನ್ನು ಕಲಿಯಲು ಬಯಸದಿದ್ದರೆ, ಆದರೆ ಅಂತಹ ಸರ್ವರ್ ಅನ್ನು ಹೊಂದಿಸಲು ಬಯಸಿದರೆ, ಈ ಲೇಖನವು ನಿಮಗಾಗಿ ಆಗಿದೆ.

ಲೇಖನವು ಪ್ರತಿಯೊಂದು ವಿವರವನ್ನು ವಿವರಿಸಲು ಯಾವುದೇ ಪ್ರಯತ್ನವನ್ನು ಮಾಡುವುದಿಲ್ಲ. ವಿವರಣೆಯು ಪ್ರಮಾಣಿತವಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡದಿರುವ ಅಥವಾ ಗ್ರಾಹಕರ ದೃಷ್ಟಿಕೋನದಿಂದ ಮುಖ್ಯವಾದುದಕ್ಕೆ ಹೋಗುತ್ತದೆ.

ಮೇಲ್ ಸರ್ವರ್ ಅನ್ನು ಸ್ಥಾಪಿಸುವ ಪ್ರೇರಣೆ ನನ್ನ ಬಹುಕಾಲದ ಕನಸಾಗಿತ್ತು. ಇದು ಮೂರ್ಖತನವೆಂದು ತೋರುತ್ತದೆ, ಆದರೆ IMHO, ನಿಮ್ಮ ನೆಚ್ಚಿನ ಬ್ರ್ಯಾಂಡ್‌ನಿಂದ ಹೊಸ ಕಾರಿನ ಕನಸು ಕಾಣುವುದಕ್ಕಿಂತ ಇದು ಉತ್ತಮವಾಗಿದೆ.

IPv6 ಅನ್ನು ಹೊಂದಿಸಲು ಎರಡು ಪ್ರೇರಣೆಗಳಿವೆ. ಐಟಿ ತಜ್ಞರು ಬದುಕಲು ನಿರಂತರವಾಗಿ ಹೊಸ ತಂತ್ರಜ್ಞಾನಗಳನ್ನು ಕಲಿಯಬೇಕಾಗುತ್ತದೆ. ಸೆನ್ಸಾರ್ಶಿಪ್ ವಿರುದ್ಧದ ಹೋರಾಟಕ್ಕೆ ನನ್ನ ಸಾಧಾರಣ ಕೊಡುಗೆಯನ್ನು ನೀಡಲು ನಾನು ಬಯಸುತ್ತೇನೆ.

OpenVPN ಅನ್ನು ಹೊಂದಿಸಲು ಪ್ರೇರಣೆಯು ಕೇವಲ IPv6 ಅನ್ನು ಸ್ಥಳೀಯ ಗಣಕದಲ್ಲಿ ಕೆಲಸ ಮಾಡುವುದು.
ಹಲವಾರು ಭೌತಿಕ ಇಂಟರ್‌ಫೇಸ್‌ಗಳನ್ನು ಹೊಂದಿಸಲು ಪ್ರೇರಣೆ ನನ್ನ ಸರ್ವರ್‌ನಲ್ಲಿ ನಾನು ಒಂದು ಇಂಟರ್ಫೇಸ್ ಅನ್ನು "ನಿಧಾನವಾಗಿ ಆದರೆ ಅನಿಯಮಿತ" ಮತ್ತು ಇನ್ನೊಂದು "ವೇಗದ ಆದರೆ ಸುಂಕದೊಂದಿಗೆ" ಹೊಂದಿದ್ದೇನೆ.

ಬೈಂಡ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಹೊಂದಿಸಲು ಪ್ರೇರಣೆ ನನ್ನ ISP ಅಸ್ಥಿರ DNS ಸರ್ವರ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ ಮತ್ತು google ಸಹ ಕೆಲವೊಮ್ಮೆ ವಿಫಲಗೊಳ್ಳುತ್ತದೆ. ವೈಯಕ್ತಿಕ ಬಳಕೆಗಾಗಿ ನನಗೆ ಸ್ಥಿರವಾದ DNS ಸರ್ವರ್ ಬೇಕು.

ಲೇಖನವನ್ನು ಬರೆಯಲು ಪ್ರೇರಣೆ - ನಾನು 10 ತಿಂಗಳ ಹಿಂದೆ ಡ್ರಾಫ್ಟ್ ಅನ್ನು ಬರೆದಿದ್ದೇನೆ ಮತ್ತು ನಾನು ಅದನ್ನು ಈಗಾಗಲೇ ಎರಡು ಬಾರಿ ನೋಡಿದ್ದೇನೆ. ಲೇಖಕರಿಗೆ ಇದು ನಿಯಮಿತವಾಗಿ ಅಗತ್ಯವಿದ್ದರೂ ಸಹ, ಇತರರಿಗೂ ಇದು ಬೇಕಾಗುವ ಹೆಚ್ಚಿನ ಸಂಭವನೀಯತೆಯಿದೆ.

ಮೇಲ್ ಸರ್ವರ್‌ಗೆ ಸಾರ್ವತ್ರಿಕ ಪರಿಹಾರವಿಲ್ಲ. ಆದರೆ ನಾನು ಏನನ್ನಾದರೂ ಬರೆಯಲು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ "ಇದನ್ನು ಮಾಡಿ ಮತ್ತು ನಂತರ, ಎಲ್ಲವೂ ಕೆಲಸ ಮಾಡುವಾಗ, ಹೆಚ್ಚುವರಿ ವಿಷಯವನ್ನು ಎಸೆಯಿರಿ."

tech.ru ಕಂಪನಿಯು Colocation ಸರ್ವರ್ ಅನ್ನು ಹೊಂದಿದೆ. OVH, Hetzner, AWS ನೊಂದಿಗೆ ಹೋಲಿಸಲು ಸಾಧ್ಯವಿದೆ. ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು, tech.ru ನೊಂದಿಗೆ ಸಹಕಾರವು ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಿರುತ್ತದೆ.

ಡೆಬಿಯನ್ 9 ಅನ್ನು ಸರ್ವರ್‌ನಲ್ಲಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆ.

ಸರ್ವರ್ 2 ಇಂಟರ್‌ಫೇಸ್‌ಗಳನ್ನು `eno1` ಮತ್ತು `eno2` ಹೊಂದಿದೆ. ಮೊದಲನೆಯದು ಅನಿಯಮಿತವಾಗಿದೆ, ಮತ್ತು ಎರಡನೆಯದು ಕ್ರಮವಾಗಿ ವೇಗವಾಗಿರುತ್ತದೆ.

`eno3` ಇಂಟರ್‌ಫೇಸ್‌ನಲ್ಲಿ 0 ಸ್ಥಿರ IP ವಿಳಾಸಗಳಿವೆ, XX.XX.XX.X1 ಮತ್ತು XX.XX.XX.X2 ಮತ್ತು XX.XX.XX.X1 ಮತ್ತು `eno5` ಇಂಟರ್‌ಫೇಸ್‌ನಲ್ಲಿ XX.XX.XX.X2 .

ಲಭ್ಯವಿದೆ XXXX:XXXX:XXXX:XXXX::/64 `eno6` ಇಂಟರ್‌ಫೇಸ್‌ಗೆ ನಿಯೋಜಿಸಲಾದ IPv1 ವಿಳಾಸಗಳ ಪೂಲ್ ಮತ್ತು ಅದರಿಂದ XXXX:XXXX:XXXX:XXXX:1:2::/96 ಅನ್ನು ನನ್ನ ಕೋರಿಕೆಯ ಮೇರೆಗೆ `eno2` ಗೆ ನಿಯೋಜಿಸಲಾಗಿದೆ.

3 ಡೊಮೇನ್‌ಗಳಿವೆ `domain1.com`, `domain2.com`, `domain3.com`. `domain1.com` ಮತ್ತು `domain3.com` ಗಾಗಿ SSL ಪ್ರಮಾಣಪತ್ರವಿದೆ.

ನನ್ನ ಮೇಲ್ಬಾಕ್ಸ್ ಅನ್ನು ಲಿಂಕ್ ಮಾಡಲು ನಾನು ಬಯಸುವ Google ಖಾತೆಯನ್ನು ನಾನು ಹೊಂದಿದ್ದೇನೆ[ಇಮೇಲ್ ರಕ್ಷಿಸಲಾಗಿದೆ]` (ಮೇಲ್ ಸ್ವೀಕರಿಸುವುದು ಮತ್ತು gmail ಇಂಟರ್ಫೇಸ್‌ನಿಂದ ನೇರವಾಗಿ ಮೇಲ್ ಕಳುಹಿಸುವುದು).
ಅಂಚೆಪೆಟ್ಟಿಗೆ ಇರಬೇಕು`[ಇಮೇಲ್ ರಕ್ಷಿಸಲಾಗಿದೆ]`, ನನ್ನ gmail ನಲ್ಲಿ ನಾನು ನೋಡಲು ಬಯಸುವ ಇಮೇಲ್‌ನ ನಕಲು. ಮತ್ತು ` ಪರವಾಗಿ ಏನನ್ನಾದರೂ ಕಳುಹಿಸಲು ಸಾಧ್ಯವಾಗುವುದು ಅಪರೂಪ[ಇಮೇಲ್ ರಕ್ಷಿಸಲಾಗಿದೆ]`ವೆಬ್ ಇಂಟರ್ಫೇಸ್ ಮೂಲಕ.

ಅಂಚೆಪೆಟ್ಟಿಗೆ ಇರಬೇಕು`[ಇಮೇಲ್ ರಕ್ಷಿಸಲಾಗಿದೆ]`, ಇದು ಇವನೊವ್ ತನ್ನ ಐಫೋನ್‌ನಿಂದ ಬಳಸುತ್ತಾನೆ.

ಕಳುಹಿಸಿದ ಇಮೇಲ್‌ಗಳು ಎಲ್ಲಾ ಆಧುನಿಕ ಆಂಟಿಸ್ಪ್ಯಾಮ್ ಅವಶ್ಯಕತೆಗಳನ್ನು ಅನುಸರಿಸಬೇಕು.
ಸಾರ್ವಜನಿಕ ನೆಟ್‌ವರ್ಕ್‌ಗಳಲ್ಲಿ ಹೆಚ್ಚಿನ ಮಟ್ಟದ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಅನ್ನು ಒದಗಿಸಬೇಕು.
ಪತ್ರಗಳನ್ನು ಕಳುಹಿಸಲು ಮತ್ತು ಸ್ವೀಕರಿಸಲು IPv6 ಬೆಂಬಲ ಇರಬೇಕು.
ಇಮೇಲ್‌ಗಳನ್ನು ಎಂದಿಗೂ ಅಳಿಸದ SpamAssassin ಇರಬೇಕು. ಮತ್ತು ಇದು ಬೌನ್ಸ್ ಅಥವಾ ಸ್ಕಿಪ್ ಅಥವಾ IMAP "ಸ್ಪ್ಯಾಮ್" ಫೋಲ್ಡರ್‌ಗೆ ಕಳುಹಿಸುತ್ತದೆ.
SpamAssassin ಸ್ವಯಂ-ಕಲಿಕೆಯನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕು: ನಾನು ಸ್ಪ್ಯಾಮ್ ಫೋಲ್ಡರ್‌ಗೆ ಪತ್ರವನ್ನು ಸರಿಸಿದರೆ, ಅದು ಇದರಿಂದ ಕಲಿಯುತ್ತದೆ; ನಾನು ಸ್ಪ್ಯಾಮ್ ಫೋಲ್ಡರ್‌ನಿಂದ ಪತ್ರವನ್ನು ಸರಿಸಿದರೆ, ಅದು ಇದರಿಂದ ಕಲಿಯುತ್ತದೆ. SpamAssassin ತರಬೇತಿಯ ಫಲಿತಾಂಶಗಳು ಪತ್ರವು ಸ್ಪ್ಯಾಮ್ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಕೊನೆಗೊಳ್ಳುತ್ತದೆಯೇ ಎಂಬುದರ ಮೇಲೆ ಪ್ರಭಾವ ಬೀರಬೇಕು.
PHP ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳು ನೀಡಿದ ಸರ್ವರ್‌ನಲ್ಲಿ ಯಾವುದೇ ಡೊಮೇನ್ ಪರವಾಗಿ ಮೇಲ್ ಕಳುಹಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ.
IPv6 ಅನ್ನು ಹೊಂದಿರದ ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ IPv6 ಅನ್ನು ಬಳಸುವ ಸಾಮರ್ಥ್ಯದೊಂದಿಗೆ openvpn ಸೇವೆ ಇರಬೇಕು.

ಮೊದಲು ನೀವು IPv6 ಸೇರಿದಂತೆ ಇಂಟರ್ಫೇಸ್ ಮತ್ತು ರೂಟಿಂಗ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ.
ನಂತರ ನೀವು OpenVPN ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ, ಇದು IPv4 ಮೂಲಕ ಸಂಪರ್ಕಗೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಕ್ಲೈಂಟ್‌ಗೆ ಸ್ಥಿರ-ನೈಜ IPv6 ವಿಳಾಸವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಈ ಕ್ಲೈಂಟ್ ಸರ್ವರ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ IPv6 ಸೇವೆಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರುತ್ತದೆ ಮತ್ತು ಇಂಟರ್ನೆಟ್‌ನಲ್ಲಿ ಯಾವುದೇ IPv6 ಸಂಪನ್ಮೂಲಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರುತ್ತದೆ.
ನಂತರ ನೀವು ಅಕ್ಷರಗಳು + SPF + DKIM + rDNS ಮತ್ತು ಇತರ ರೀತಿಯ ಚಿಕ್ಕ ವಿಷಯಗಳನ್ನು ಕಳುಹಿಸಲು ಪೋಸ್ಟ್‌ಫಿಕ್ಸ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ.
ನಂತರ ನೀವು Dovecot ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ ಮತ್ತು ಮಲ್ಟಿಡೊಮೈನ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ.
ನಂತರ ನೀವು SpamAssassin ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ ಮತ್ತು ತರಬೇತಿಯನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ.
ಅಂತಿಮವಾಗಿ, ಬೈಂಡ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ.

============= ಬಹು ಇಂಟರ್ಫೇಸ್‌ಗಳು =============

ಇಂಟರ್‌ಫೇಸ್‌ಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು, ನೀವು ಇದನ್ನು "/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 ನಿಂದ ವರ್ಚುವಲ್ ನೆಟ್‌ವರ್ಕ್ ಕಾರ್ಡ್‌ನ ಹೆಸರಾಗಿದೆ.
Eno0 ನಲ್ಲಿ XX.XX.XX.X4 - IPv1 #1.
Eno1 ನಲ್ಲಿ XX.XX.XX.X4 - IPv2 #1.
Eno2 ನಲ್ಲಿ XX.XX.XX.X4 - IPv3 #1.
Eno5 ನಲ್ಲಿ XX.XX.XX.X4 - IPv1 #2.
XX.XX.XX.1 - IPv4 ಗೇಟ್‌ವೇ.
XXXX:XXXX:XXXX: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 ನಿಂದ).

“table eno1t” ಮತ್ತು “table eno2t” - ಈ ಮಾರ್ಗ-ನಿಯಮಗಳ ಅರ್ಥವೇನೆಂದರೆ, eno1 -> ಮೂಲಕ ಪ್ರವೇಶಿಸುವ ಸಂಚಾರವು ಅದರ ಮೂಲಕ ಹೊರಡುತ್ತದೆ ಮತ್ತು eno2 -> ಮೂಲಕ ಪ್ರವೇಶಿಸುವ ಸಂಚಾರವು ಅದರ ಮೂಲಕ ಹೊರಡುತ್ತದೆ. ಮತ್ತು ಸರ್ವರ್‌ನಿಂದ ಪ್ರಾರಂಭಿಸಲಾದ ಸಂಪರ್ಕಗಳು eno1 ಮೂಲಕ ಹೋಗುತ್ತವೆ.

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

"ಟೇಬಲ್ eno1t" -> ಎಂದು ಗುರುತಿಸಲಾದ ಯಾವುದೇ ನಿಯಮದ ಅಡಿಯಲ್ಲಿ ಬರುವ ಯಾವುದೇ ಗ್ರಹಿಸಲಾಗದ ಟ್ರಾಫಿಕ್ ಅನ್ನು ಈ ಆಜ್ಞೆಯೊಂದಿಗೆ ನಾವು ಎನೋ1 ಇಂಟರ್ಫೇಸ್‌ಗೆ ಕಳುಹಿಸುತ್ತೇವೆ ಎಂದು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತೇವೆ.

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

ಈ ಬ್ಲಾಕ್ ಎನೋ4 ಇಂಟರ್ಫೇಸ್‌ಗಾಗಿ ಎರಡನೇ IPv1 ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.

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

ಈ ಆಜ್ಞೆಯೊಂದಿಗೆ ನಾವು 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 ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಇದಕ್ಕಾಗಿ ಮಾತ್ರ. ಇದರ ಬಗ್ಗೆ ನಂತರ ಇನ್ನಷ್ಟು.

ಗೇಟ್‌ವೇ ವಿಷಯದ ಕುರಿತು - ಅದು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಅದು ಉತ್ತಮವಾಗಿದೆ. ಆದರೆ ಸರ್ವರ್ ಸಂಪರ್ಕಗೊಂಡಿರುವ ಸ್ವಿಚ್‌ನ 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 - ಸಬ್‌ನೆಟ್ ಎನೋ1 ಗಿಂತ ದೊಡ್ಡದಾಗಿರಬೇಕು. ಇಲ್ಲದಿದ್ದರೆ, OpenVPN ಕ್ಲೈಂಟ್‌ಗಳಿಗಾಗಿ IPv6 ಗೇಟ್‌ವೇ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ.
eno2 - ಸಬ್‌ನೆಟ್ tun0 ಗಿಂತ ದೊಡ್ಡದಾಗಿರಬೇಕು. ಇಲ್ಲದಿದ್ದರೆ, OpenVPN ಕ್ಲೈಂಟ್‌ಗಳು ಸ್ಥಳೀಯ IPv6 ವಿಳಾಸಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ.
ಸ್ಪಷ್ಟತೆಗಾಗಿ, ನಾನು 16 ರ ಸಬ್‌ನೆಟ್ ಹಂತವನ್ನು ಆಯ್ಕೆ ಮಾಡಿದ್ದೇನೆ, ಆದರೆ ನೀವು ಬಯಸಿದರೆ, ನೀವು "1" ಹಂತವನ್ನು ಸಹ ಮಾಡಬಹುದು.
ಅದರಂತೆ, 64+16 = 80, ಮತ್ತು 80+16 = 96.

ಇನ್ನೂ ಹೆಚ್ಚಿನ ಸ್ಪಷ್ಟತೆಗಾಗಿ:
XXXX:XXXX:XXXX:XXXX:1:1:YYYY:YYYY ಎನೋ1 ಇಂಟರ್ಫೇಸ್‌ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟ ಸೈಟ್‌ಗಳು ಅಥವಾ ಸೇವೆಗಳಿಗೆ ನಿಯೋಜಿಸಬೇಕಾದ ವಿಳಾಸಗಳಾಗಿವೆ.
XXXX:XXXX:XXXX:XXXX:1:2:YYYY:YYYY ಎನೋ2 ಇಂಟರ್ಫೇಸ್‌ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟ ಸೈಟ್‌ಗಳು ಅಥವಾ ಸೇವೆಗಳಿಗೆ ನಿಯೋಜಿಸಬೇಕಾದ ವಿಳಾಸಗಳಾಗಿವೆ.
XXXX:XXXX: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 ==============

iptables ಇಲ್ಲದೆ OpenVPN IPv4 ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ.

VPN ಗಾಗಿ ನನ್ನ iptables ಹೀಗಿವೆ:

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 ನೆಟ್‌ವರ್ಕ್. openvpn ಕ್ಲೈಂಟ್‌ಗಳಿಗಾಗಿ 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-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" ಫೈಲ್ ಅನ್ನು ಕ್ಲೈಂಟ್‌ನ ಸಾಧನಕ್ಕೆ ಕಳುಹಿಸಲಾಗಿದೆ.

ಐಒಎಸ್ ಕ್ಲೈಂಟ್‌ಗಳಿಗಾಗಿ ನೀವು ಈ ಕೆಳಗಿನ ಟ್ರಿಕ್ ಮಾಡಬೇಕಾಗಿದೆ:
"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

ಅತ್ಯಂತ ಕಷ್ಟಕರ ಮತ್ತು ಪ್ರಮುಖ ವಿವರ.

ದುರದೃಷ್ಟವಶಾತ್, ಕ್ಲೈಂಟ್‌ಗಳಿಗಾಗಿ IPv6 ಗೇಟ್‌ವೇ ಅನ್ನು ಸ್ವತಂತ್ರವಾಗಿ ಹೇಗೆ ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು ಎಂದು OpenVPN ಗೆ ಇನ್ನೂ ತಿಳಿದಿಲ್ಲ.
ಪ್ರತಿ ಕ್ಲೈಂಟ್‌ಗೆ ನೀವು ಇದನ್ನು "ಹಸ್ತಚಾಲಿತವಾಗಿ" ಫಾರ್ವರ್ಡ್ ಮಾಡಬೇಕು.

# 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 ರ ವೇಗದಲ್ಲಿ ಸಂಭವಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ 20 ಎಂಎಸ್.
ಆಕ್ರಮಣಕಾರರು ಮುಂಚಿತವಾಗಿ ಪಕ್ಷಗಳ ಒಂದು ಖಾಸಗಿ ಕೀಲಿಯನ್ನು ಹೊಂದಿರಬೇಕು. ಅಥವಾ ಒಂದೆರಡು ಮಿಲಿಸೆಕೆಂಡ್‌ಗಳಲ್ಲಿ ಖಾಸಗಿ ಕೀಲಿಯನ್ನು ಹುಡುಕಿ.
ಒಂದು ಆಧುನಿಕ ಖಾಸಗಿ ಕೀಲಿಯನ್ನು ಹ್ಯಾಕ್ ಮಾಡುವುದು ಸೂಪರ್ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ದಶಕಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ.

ಹಂತ #4 - ಸಾರ್ವಜನಿಕ ಕೀಲಿಗಳ ಸಾರ್ವಜನಿಕ ಡೇಟಾಬೇಸ್.
ನಿಸ್ಸಂಶಯವಾಗಿ, ಈ ಸಂಪೂರ್ಣ ಕಥೆಯಲ್ಲಿ ಕ್ಲೈಂಟ್ ಮತ್ತು ಸರ್ವರ್ ನಡುವಿನ ಸಂವಹನ ಚಾನಲ್‌ನಲ್ಲಿ ಆಕ್ರಮಣಕಾರರಿಗೆ ಕುಳಿತುಕೊಳ್ಳಲು ಅವಕಾಶವಿದೆ.
ಕ್ಲೈಂಟ್ ಸರ್ವರ್ ಎಂದು ನಟಿಸಬಹುದು, ಮತ್ತು ಸರ್ವರ್ ಕ್ಲೈಂಟ್ ಎಂದು ನಟಿಸಬಹುದು. ಮತ್ತು ಎರಡೂ ದಿಕ್ಕುಗಳಲ್ಲಿ ಒಂದು ಜೋಡಿ ಕೀಲಿಗಳನ್ನು ಅನುಕರಿಸಿ.
ನಂತರ ಆಕ್ರಮಣಕಾರರು ಎಲ್ಲಾ ದಟ್ಟಣೆಯನ್ನು ನೋಡುತ್ತಾರೆ ಮತ್ತು ದಟ್ಟಣೆಯನ್ನು "ಸಂಪಾದಿಸಲು" ಸಾಧ್ಯವಾಗುತ್ತದೆ.
ಉದಾಹರಣೆಗೆ, ಹಣವನ್ನು ಕಳುಹಿಸುವ ವಿಳಾಸವನ್ನು ಬದಲಾಯಿಸಿ ಅಥವಾ ಆನ್‌ಲೈನ್ ಬ್ಯಾಂಕಿಂಗ್‌ನಿಂದ ಪಾಸ್‌ವರ್ಡ್ ನಕಲಿಸಿ ಅಥವಾ "ಆಕ್ಷೇಪಾರ್ಹ" ವಿಷಯವನ್ನು ನಿರ್ಬಂಧಿಸಿ.
ಅಂತಹ ಆಕ್ರಮಣಕಾರರನ್ನು ಎದುರಿಸಲು, ಅವರು ಪ್ರತಿ https ಸೈಟ್‌ಗೆ ಸಾರ್ವಜನಿಕ ಕೀಗಳೊಂದಿಗೆ ಸಾರ್ವಜನಿಕ ಡೇಟಾಬೇಸ್‌ನೊಂದಿಗೆ ಬಂದರು.
ಪ್ರತಿ ಬ್ರೌಸರ್ ಸುಮಾರು 200 ಅಂತಹ ಡೇಟಾಬೇಸ್‌ಗಳ ಅಸ್ತಿತ್ವದ ಬಗ್ಗೆ "ತಿಳಿದಿದೆ". ಇದು ಪ್ರತಿ ಬ್ರೌಸರ್‌ನಲ್ಲಿ ಪೂರ್ವ-ಸ್ಥಾಪಿತವಾಗಿದೆ.
"ಜ್ಞಾನ" ಪ್ರತಿ ಪ್ರಮಾಣಪತ್ರದಿಂದ ಸಾರ್ವಜನಿಕ ಕೀಲಿಯಿಂದ ಬೆಂಬಲಿತವಾಗಿದೆ. ಅಂದರೆ, ಪ್ರತಿ ನಿರ್ದಿಷ್ಟ ಪ್ರಮಾಣೀಕರಣ ಪ್ರಾಧಿಕಾರಕ್ಕೆ ಸಂಪರ್ಕವನ್ನು ನಕಲಿ ಮಾಡಲಾಗುವುದಿಲ್ಲ.

ಈಗ https ಗಾಗಿ SSL ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂಬುದರ ಕುರಿತು ಸರಳವಾದ ತಿಳುವಳಿಕೆ ಇದೆ.
ನಿಮ್ಮ ಮೆದುಳನ್ನು ನೀವು ಬಳಸಿದರೆ, ವಿಶೇಷ ಸೇವೆಗಳು ಈ ರಚನೆಯಲ್ಲಿ ಏನನ್ನಾದರೂ ಹೇಗೆ ಹ್ಯಾಕ್ ಮಾಡಬಹುದು ಎಂಬುದು ಸ್ಪಷ್ಟವಾಗುತ್ತದೆ. ಆದರೆ ಇದು ಅವರಿಗೆ ದೈತ್ಯಾಕಾರದ ಪ್ರಯತ್ನಗಳನ್ನು ವೆಚ್ಚ ಮಾಡುತ್ತದೆ.
ಮತ್ತು NSA ಅಥವಾ CIA ಗಿಂತ ಚಿಕ್ಕದಾದ ಸಂಸ್ಥೆಗಳು - VIP ಗಳಿಗೆ ಸಹ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಮಟ್ಟದ ರಕ್ಷಣೆಯನ್ನು ಹ್ಯಾಕ್ ಮಾಡುವುದು ಅಸಾಧ್ಯವಾಗಿದೆ.

ನಾನು ssh ಸಂಪರ್ಕಗಳ ಬಗ್ಗೆ ಕೂಡ ಸೇರಿಸುತ್ತೇನೆ. ಅಲ್ಲಿ ಯಾವುದೇ ಸಾರ್ವಜನಿಕ ಕೀಗಳಿಲ್ಲ, ಆದ್ದರಿಂದ ನೀವು ಏನು ಮಾಡಬಹುದು? ಸಮಸ್ಯೆಯನ್ನು ಎರಡು ರೀತಿಯಲ್ಲಿ ಪರಿಹರಿಸಲಾಗುತ್ತದೆ.
ಆಯ್ಕೆ ssh-by-password:
ಮೊದಲ ಸಂಪರ್ಕದ ಸಮಯದಲ್ಲಿ, ನಾವು 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 ಪ್ರಮುಖ ಸೃಷ್ಟಿಯ ವರ್ಷವಾಗಿದೆ.
ಚೈನ್ಡ್ - ಸಾರ್ವಜನಿಕ ಕೀಗಳ ಸರಪಳಿ ಇದೆ ಎಂಬ ಪದನಾಮ (ಮೊದಲನೆಯದು ನಮ್ಮ ಸಾರ್ವಜನಿಕ ಕೀ ಮತ್ತು ಉಳಿದವು ಸಾರ್ವಜನಿಕ ಕೀಲಿಯನ್ನು ನೀಡಿದ ಕಂಪನಿಯಿಂದ ಬಂದವು).
crt - ಸಿದ್ಧ ಪ್ರಮಾಣಪತ್ರವಿದೆ ಎಂಬ ಪದನಾಮ (ತಾಂತ್ರಿಕ ವಿವರಣೆಗಳೊಂದಿಗೆ ಸಾರ್ವಜನಿಕ ಕೀ).

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 ಎನ್ನುವುದು IP ವಿಳಾಸದ ಮೂಲಕ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಸ್ವೀಕರಿಸುವ ಪ್ರಕ್ರಿಯೆಯಾಗಿದೆ.
ಮತ್ತು ಮೇಲ್ಗಾಗಿ, ಇಮೇಲ್ ಕಳುಹಿಸಲಾದ ವಿಳಾಸದ rDNS ಗೆ ಹೆಲೋ ನಿಖರವಾಗಿ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಲು ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.

ಪತ್ರವನ್ನು ಕಳುಹಿಸಿರುವ ಇಮೇಲ್ ಡೊಮೇನ್‌ಗೆ ಹೆಲೋ ಹೊಂದಾಣಿಕೆಯಾಗದಿದ್ದರೆ, ಸ್ಪ್ಯಾಮ್ ಅಂಕಗಳನ್ನು ನೀಡಲಾಗುತ್ತದೆ.

Helo rDNS ಗೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ - ಬಹಳಷ್ಟು ಸ್ಪ್ಯಾಮ್ ಅಂಕಗಳನ್ನು ನೀಡಲಾಗುತ್ತದೆ.
ಅಂತೆಯೇ, ಪ್ರತಿ ಡೊಮೇನ್ ತನ್ನದೇ ಆದ IP ವಿಳಾಸವನ್ನು ಹೊಂದಿರಬೇಕು.
OVH ಗಾಗಿ - ಕನ್ಸೋಲ್ನಲ್ಲಿ rDNS ಅನ್ನು ಸೂಚಿಸಲು ಸಾಧ್ಯವಿದೆ.
tech.ru ಗಾಗಿ - ಬೆಂಬಲದ ಮೂಲಕ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲಾಗುತ್ತದೆ.
AWS ಗಾಗಿ, ಬೆಂಬಲದ ಮೂಲಕ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲಾಗುತ್ತದೆ.
“inet_protocols” ಮತ್ತು “smtp_bind_address6” - ನಾವು IPv6 ಬೆಂಬಲವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತೇವೆ.
IPv6 ಗಾಗಿ ನೀವು rDNS ಅನ್ನು ಸಹ ನೋಂದಾಯಿಸಿಕೊಳ್ಳಬೇಕು.
“syslog_name” - ಮತ್ತು ಇದು ಲಾಗ್‌ಗಳನ್ನು ಓದಲು ಸುಲಭವಾಗಿದೆ.

ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ಖರೀದಿಸಿ ನಾನು ಇಲ್ಲಿ ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ.

ಇಲ್ಲಿ postfix+dovecot ಲಿಂಕ್ ಅನ್ನು ಹೊಂದಿಸಲಾಗುತ್ತಿದೆ.

SPF ಅನ್ನು ಹೊಂದಿಸಲಾಗುತ್ತಿದೆ.

============= ಪಾರಿವಾಳ ==============

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

ಪಾಸ್ವರ್ಡ್ "ಪಾಸ್ವರ್ಡ್" (ಸಾಕಷ್ಟು ಏನನ್ನಾದರೂ ಬದಲಿಸಿ) ಜೊತೆಗೆ "sa" ಬಳಕೆದಾರನೊಂದಿಗೆ mysql ನಲ್ಲಿ "sa" ಡೇಟಾಬೇಸ್ ಅನ್ನು ನೀವು ರಚಿಸಬೇಕಾಗಿದೆ.

report_safe - ಇದು ಪತ್ರದ ಬದಲಿಗೆ ಸ್ಪ್ಯಾಮ್ ಇಮೇಲ್‌ನ ವರದಿಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ.
use_bayes ಸ್ಪಾಮಾಸ್ಸಾಸಿನ್ ಯಂತ್ರ ಕಲಿಕೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳಾಗಿವೆ.

ಉಳಿದ ಸ್ಪಾಮಾಸ್ಸಾಸಿನ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಲೇಖನದಲ್ಲಿ ಮೊದಲು ಬಳಸಲಾಗಿದೆ.

ಸಾಮಾನ್ಯ ಸೆಟ್ಟಿಂಗ್ "ಸ್ಪಾಮಾಸ್ಸಾಸಿನ್".
IMAP "ಸ್ಪ್ಯಾಮ್" ಫೋಲ್ಡರ್‌ಗೆ ಹೊಸ ಸ್ಪ್ಯಾಮ್ ಇಮೇಲ್‌ಗಳನ್ನು ಸರಿಸುವುದರ ಕುರಿತು.
Dovecot + SpamAssassin ನ ಸರಳ ಸಂಯೋಜನೆಯ ಬಗ್ಗೆ.
ಇಮ್ಯಾಪ್ ಫೋಲ್ಡರ್‌ಗಳಲ್ಲಿ ಅಕ್ಷರಗಳನ್ನು ಚಲಿಸುವಾಗ ಸ್ಪಾಮಾಸ್ಸಾಸಿನ್ ಕಲಿಯುವ ಸಿದ್ಧಾಂತವನ್ನು ಓದಲು ನಾನು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ (ಮತ್ತು ಅದನ್ನು ಬಳಸಲು ನಾನು ಶಿಫಾರಸು ಮಾಡುವುದಿಲ್ಲ).

============= ಸಮುದಾಯಕ್ಕೆ ಮನವಿ =============

ಫಾರ್ವರ್ಡ್ ಮಾಡಿದ ಪತ್ರಗಳ ಸುರಕ್ಷತೆಯ ಮಟ್ಟವನ್ನು ಹೇಗೆ ಹೆಚ್ಚಿಸುವುದು ಎಂಬುದರ ಕುರಿತು ಸಮುದಾಯಕ್ಕೆ ಒಂದು ಕಲ್ಪನೆಯನ್ನು ಎಸೆಯಲು ನಾನು ಬಯಸುತ್ತೇನೆ. ನಾನು ಮೇಲ್ ವಿಷಯದಲ್ಲಿ ತುಂಬಾ ಆಳವಾಗಿ ಮುಳುಗಿರುವುದರಿಂದ.

ಆದ್ದರಿಂದ ಬಳಕೆದಾರನು ತನ್ನ ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ ಒಂದು ಜೋಡಿ ಕೀಗಳನ್ನು ರಚಿಸಬಹುದು (ಔಟ್‌ಲುಕ್, ಥಂಡರ್‌ಬರ್ಡ್, ಬ್ರೌಸರ್-ಪ್ಲಗಿನ್, ...). ಸಾರ್ವಜನಿಕ ಮತ್ತು ಖಾಸಗಿ. ಸಾರ್ವಜನಿಕ - DNS ಗೆ ಕಳುಹಿಸಿ. ಖಾಸಗಿ - ಕ್ಲೈಂಟ್ನಲ್ಲಿ ಉಳಿಸಿ. ಮೇಲ್ ಸರ್ವರ್‌ಗಳು ನಿರ್ದಿಷ್ಟ ಸ್ವೀಕೃತದಾರರಿಗೆ ಕಳುಹಿಸಲು ಸಾರ್ವಜನಿಕ ಕೀಲಿಯನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ.

ಮತ್ತು ಅಂತಹ ಅಕ್ಷರಗಳೊಂದಿಗೆ ಸ್ಪ್ಯಾಮ್ ವಿರುದ್ಧ ರಕ್ಷಿಸಲು (ಹೌದು, ಮೇಲ್ ಸರ್ವರ್ ವಿಷಯವನ್ನು ವೀಕ್ಷಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ) - ನೀವು 3 ನಿಯಮಗಳನ್ನು ಪರಿಚಯಿಸುವ ಅಗತ್ಯವಿದೆ:

  1. ಕಡ್ಡಾಯ ನೈಜ DKIM ಸಹಿ, ಕಡ್ಡಾಯ SPF, ಕಡ್ಡಾಯ rDNS.
  2. ಆಂಟಿಸ್ಪ್ಯಾಮ್ ತರಬೇತಿಯ ವಿಷಯದ ಮೇಲೆ ನರಮಂಡಲದ ನೆಟ್‌ವರ್ಕ್ + ಕ್ಲೈಂಟ್ ಬದಿಯಲ್ಲಿ ಅದರ ಡೇಟಾಬೇಸ್.
  3. ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಅಲ್ಗಾರಿದಮ್ ಅಂದರೆ ಕಳುಹಿಸುವ ಭಾಗವು ಸ್ವೀಕರಿಸುವ ಭಾಗಕ್ಕಿಂತ ಎನ್‌ಕ್ರಿಪ್ಶನ್‌ನಲ್ಲಿ 100 ಪಟ್ಟು ಹೆಚ್ಚು ಸಿಪಿಯು ಶಕ್ತಿಯನ್ನು ವ್ಯಯಿಸಬೇಕು.

ಸಾರ್ವಜನಿಕ ಪತ್ರಗಳ ಜೊತೆಗೆ, "ಸುರಕ್ಷಿತ ಪತ್ರವ್ಯವಹಾರವನ್ನು ಪ್ರಾರಂಭಿಸಲು" ಪ್ರಮಾಣಿತ ಪ್ರಸ್ತಾವನೆ ಪತ್ರವನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಿ. ಬಳಕೆದಾರರಲ್ಲಿ ಒಬ್ಬರು (ಮೇಲ್ಬಾಕ್ಸ್) ಮತ್ತೊಂದು ಮೇಲ್ಬಾಕ್ಸ್ಗೆ ಲಗತ್ತಿಸುವಿಕೆಯೊಂದಿಗೆ ಪತ್ರವನ್ನು ಕಳುಹಿಸುತ್ತಾರೆ. ಪತ್ರವು ಪತ್ರವ್ಯವಹಾರಕ್ಕಾಗಿ ಸುರಕ್ಷಿತ ಸಂವಹನ ಚಾನಲ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು ಪಠ್ಯ ಪ್ರಸ್ತಾಪವನ್ನು ಒಳಗೊಂಡಿದೆ ಮತ್ತು ಮೇಲ್ಬಾಕ್ಸ್ನ ಮಾಲೀಕರ ಸಾರ್ವಜನಿಕ ಕೀಲಿ (ಕ್ಲೈಂಟ್ ಬದಿಯಲ್ಲಿ ಖಾಸಗಿ ಕೀಲಿಯೊಂದಿಗೆ).

ಪ್ರತಿ ಪತ್ರವ್ಯವಹಾರಕ್ಕಾಗಿ ನೀವು ನಿರ್ದಿಷ್ಟವಾಗಿ ಒಂದೆರಡು ಕೀಗಳನ್ನು ಸಹ ಮಾಡಬಹುದು. ಸ್ವೀಕರಿಸುವ ಬಳಕೆದಾರರು ಈ ಪ್ರಸ್ತಾಪವನ್ನು ಸ್ವೀಕರಿಸಬಹುದು ಮತ್ತು ಅವರ ಸಾರ್ವಜನಿಕ ಕೀಲಿಯನ್ನು ಕಳುಹಿಸಬಹುದು (ಈ ಪತ್ರವ್ಯವಹಾರಕ್ಕಾಗಿ ವಿಶೇಷವಾಗಿ ರಚಿಸಲಾಗಿದೆ). ಮುಂದೆ, ಮೊದಲ ಬಳಕೆದಾರರು ಸೇವಾ ನಿಯಂತ್ರಣ ಪತ್ರವನ್ನು ಕಳುಹಿಸುತ್ತಾರೆ (ಎರಡನೇ ಬಳಕೆದಾರರ ಸಾರ್ವಜನಿಕ ಕೀಲಿಯೊಂದಿಗೆ ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗಿದೆ) - ಅದರ ರಶೀದಿಯ ನಂತರ ಎರಡನೇ ಬಳಕೆದಾರರು ರೂಪುಗೊಂಡ ಸಂವಹನ ಚಾನಲ್ ಅನ್ನು ವಿಶ್ವಾಸಾರ್ಹವೆಂದು ಪರಿಗಣಿಸಬಹುದು. ಮುಂದೆ, ಎರಡನೇ ಬಳಕೆದಾರರು ನಿಯಂತ್ರಣ ಪತ್ರವನ್ನು ಕಳುಹಿಸುತ್ತಾರೆ - ಮತ್ತು ನಂತರ ಮೊದಲ ಬಳಕೆದಾರರು ರೂಪುಗೊಂಡ ಚಾನಲ್ ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಪರಿಗಣಿಸಬಹುದು.

ರಸ್ತೆಯ ಮೇಲೆ ಕೀಗಳ ಪ್ರತಿಬಂಧವನ್ನು ಎದುರಿಸಲು, ಪ್ರೋಟೋಕಾಲ್ ಫ್ಲ್ಯಾಶ್ ಡ್ರೈವ್ ಬಳಸಿ ಕನಿಷ್ಠ ಒಂದು ಸಾರ್ವಜನಿಕ ಕೀಲಿಯನ್ನು ರವಾನಿಸುವ ಸಾಧ್ಯತೆಯನ್ನು ಒದಗಿಸಬೇಕು.

ಮತ್ತು ಅತ್ಯಂತ ಮುಖ್ಯವಾದ ವಿಷಯವೆಂದರೆ ಅದು ಎಲ್ಲಾ ಕೆಲಸ ಮಾಡುತ್ತದೆ (ಪ್ರಶ್ನೆ "ಅದಕ್ಕೆ ಯಾರು ಪಾವತಿಸುತ್ತಾರೆ?"):
10 ವರ್ಷಗಳವರೆಗೆ $3 ರಿಂದ ಪ್ರಾರಂಭವಾಗುವ ಪೋಸ್ಟಲ್ ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ನಮೂದಿಸಿ. "ನನ್ನ ಸಾರ್ವಜನಿಕ ಕೀಲಿಗಳು ಅಲ್ಲಿವೆ" ಎಂದು ಡಿಎನ್‌ಎಸ್‌ನಲ್ಲಿ ಸೂಚಿಸಲು ಕಳುಹಿಸುವವರಿಗೆ ಇದು ಅನುಮತಿಸುತ್ತದೆ. ಮತ್ತು ಸುರಕ್ಷಿತ ಸಂಪರ್ಕವನ್ನು ಪ್ರಾರಂಭಿಸಲು ಅವರು ನಿಮಗೆ ಅವಕಾಶವನ್ನು ನೀಡುತ್ತಾರೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, ಅಂತಹ ಸಂಪರ್ಕಗಳನ್ನು ಸ್ವೀಕರಿಸುವುದು ಉಚಿತವಾಗಿದೆ.
gmail ಅಂತಿಮವಾಗಿ ತನ್ನ ಬಳಕೆದಾರರನ್ನು ಹಣಗಳಿಸುತ್ತಿದೆ. ಪ್ರತಿ 10 ವರ್ಷಕ್ಕೆ $3 ಗೆ - ಸುರಕ್ಷಿತ ಪತ್ರವ್ಯವಹಾರ ಚಾನೆಲ್‌ಗಳನ್ನು ರಚಿಸುವ ಹಕ್ಕು.

============= ತೀರ್ಮಾನ ===============

ಸಂಪೂರ್ಣ ಲೇಖನವನ್ನು ಪರೀಕ್ಷಿಸಲು, ನಾನು ಒಂದು ತಿಂಗಳಿಗೆ ಮೀಸಲಾದ ಸರ್ವರ್ ಅನ್ನು ಬಾಡಿಗೆಗೆ ಪಡೆಯಲಿದ್ದೇನೆ ಮತ್ತು SSL ಪ್ರಮಾಣಪತ್ರದೊಂದಿಗೆ ಡೊಮೇನ್ ಅನ್ನು ಖರೀದಿಸಲಿದ್ದೇನೆ.

ಆದರೆ ಜೀವನ ಪರಿಸ್ಥಿತಿಗಳು ಅಭಿವೃದ್ಧಿಗೊಂಡವು ಆದ್ದರಿಂದ ಈ ಸಮಸ್ಯೆಯನ್ನು 2 ತಿಂಗಳ ಕಾಲ ಎಳೆಯಲಾಯಿತು.
ಹಾಗಾಗಿ, ನಾನು ಮತ್ತೆ ಬಿಡುವಿನ ವೇಳೆಯನ್ನು ಹೊಂದಿದ್ದಾಗ, ಪ್ರಕಟಣೆಯು ಇನ್ನೊಂದು ವರ್ಷಕ್ಕೆ ಎಳೆಯುವ ಅಪಾಯಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ ಲೇಖನವನ್ನು ಪ್ರಕಟಿಸಲು ನಾನು ನಿರ್ಧರಿಸಿದೆ.

"ಆದರೆ ಇದನ್ನು ಸಾಕಷ್ಟು ವಿವರವಾಗಿ ವಿವರಿಸಲಾಗಿಲ್ಲ" ಎಂಬಂತಹ ಸಾಕಷ್ಟು ಪ್ರಶ್ನೆಗಳಿದ್ದರೆ, ಹೊಸ ಡೊಮೇನ್ ಮತ್ತು ಹೊಸ SSL ಪ್ರಮಾಣಪತ್ರದೊಂದಿಗೆ ಮೀಸಲಾದ ಸರ್ವರ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಮತ್ತು ಅದನ್ನು ಇನ್ನಷ್ಟು ವಿವರವಾಗಿ ವಿವರಿಸಲು ಬಹುಶಃ ಶಕ್ತಿ ಇರುತ್ತದೆ. ಮುಖ್ಯವಾಗಿ, ಕಾಣೆಯಾದ ಎಲ್ಲಾ ಪ್ರಮುಖ ವಿವರಗಳನ್ನು ಗುರುತಿಸಿ.

ಪೋಸ್ಟಲ್ ಸರ್ಟಿಫಿಕೇಟ್‌ಗಳ ಬಗ್ಗೆ ವಿಚಾರಗಳ ಬಗ್ಗೆ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಪಡೆಯಲು ನಾನು ಬಯಸುತ್ತೇನೆ. ನೀವು ಕಲ್ಪನೆಯನ್ನು ಇಷ್ಟಪಟ್ಟರೆ, ನಾನು rfc ಗಾಗಿ ಡ್ರಾಫ್ಟ್ ಬರೆಯಲು ಶಕ್ತಿಯನ್ನು ಹುಡುಕಲು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ.

ಲೇಖನದ ದೊಡ್ಡ ಭಾಗಗಳನ್ನು ನಕಲಿಸುವಾಗ, ಈ ಲೇಖನಕ್ಕೆ ಲಿಂಕ್ ಅನ್ನು ಒದಗಿಸಿ.
ಬೇರೆ ಯಾವುದೇ ಭಾಷೆಗೆ ಅನುವಾದಿಸುವಾಗ, ಈ ಲೇಖನಕ್ಕೆ ಲಿಂಕ್ ಅನ್ನು ಒದಗಿಸಿ.
ನಾನೇ ಅದನ್ನು ಇಂಗ್ಲಿಷ್‌ಗೆ ಭಾಷಾಂತರಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ ಮತ್ತು ಅಡ್ಡ ಉಲ್ಲೇಖಗಳನ್ನು ಬಿಡುತ್ತೇನೆ.


ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ