Debian + Postfix + Dovecot + Multidomain + SSL + IPv6 + OpenVPN + Multi-Interfaces + SpamAssassin-Learn + Bind

ይህ ጽሑፍ ዘመናዊ የመልእክት አገልጋይ እንዴት ማዋቀር እንደሚቻል ነው።
Postfix + Dovecot. SPF + DKIM + rDNS። ከ IPv6 ጋር.
ከ TSL ምስጠራ ጋር። ከብዙ ጎራዎች ድጋፍ ጋር - የእውነተኛ SSL ሰርተፍኬት ያለው ክፍል።
በፀረ-አይፈለጌ መልዕክት ጥበቃ እና ከፍተኛ ፀረ-አይፈለጌ መልዕክት ደረጃ ከሌሎች የመልዕክት አገልጋዮች.
ለብዙ አካላዊ በይነገጾች ድጋፍ።
በOpenVPN፣ ግንኙነቱ በIPv4 በኩል ነው፣ እና IPv6 የሚሰጠው።

እነዚህን ሁሉ ቴክኖሎጂዎች መማር ካልፈለጉ ነገር ግን እንደዚህ አይነት አገልጋይ ማዋቀር ከፈለጉ ይህ ጽሑፍ ለእርስዎ ነው.

ይህ ጽሑፍ እያንዳንዱን ዝርዝር ሁኔታ ለማብራራት አይሞክርም. ማብራሪያው በመደበኛነት ያልተዘጋጀው ወይም ከተጠቃሚው አንጻር አስፈላጊ ወደሆነው ነው.

የመልእክት አገልጋይ ለማቋቋም ያነሳሳኝ የቀድሞ ህልሜ ነው። ሞኝነት ሊመስል ይችላል፣ ግን IMHO፣ ይህ ስለሚወዱት የምርት ስም አዲስ መኪና ከማለም በጣም የተሻለ ነው።

IPv6 ን ለማዋቀር ያለው ተነሳሽነት ሁለት ነው. አንድ የአይቲ ስፔሻሊስት በሕይወት ለመትረፍ አዳዲስ ቴክኖሎጂዎችን ያለማቋረጥ መማር አለበት። ሳንሱርን ለመከላከል በሚደረገው ትግል መጠነኛ የሆነ አስተዋጾ ማድረግ እፈልጋለሁ።

OpenVPNን የማዋቀር ተነሳሽነት IPv6 በአካባቢው ማሽን ላይ እንዲሰራ ማድረግ ብቻ ነው.
ብዙ አካላዊ በይነገጾችን የማዘጋጀት ተነሳሽነት በእኔ አገልጋይ ላይ አንድ "ቀርፋፋ ግን ያልተገደበ" በይነገጽ እና ሌላኛው "ፈጣን, ግን ከታሪፍ ጋር" አለኝ.

የBind ቅንብሮችን የማዋቀር ተነሳሽነት የእኔ አይኤስፒ ያልተረጋጋ የዲ ኤን ኤስ አገልጋይ መስጠቱ ነው፣ እና ጉግል አንዳንድ ጊዜም ይበላሻል። ለግል ጥቅም የተረጋጋ የዲኤንኤስ አገልጋይ እፈልጋለሁ።

ጽሑፉን ለመጻፍ ያነሳሳው ረቂቁ ከ 10 ወራት በፊት የተፃፈ ነው, እና ቀደም ሲል ሁለት ጊዜ ተመልክቻለሁ. ምንም እንኳን ደራሲው በመደበኛነት የሚያስፈልገው ቢሆንም, ከዚያም ሌሎች የሚያስፈልጋቸው ከፍተኛ ዕድል አለ.

ለደብዳቤ አገልጋዩ ምንም አይነት ሁለንተናዊ መፍትሄ የለም። ነገር ግን አንድ ነገር ለመጻፍ እሞክራለሁ "ይህን ያድርጉ እና ከዚያ ሁሉም ነገር እንደአስፈላጊነቱ ሲሰራ, ትርፍውን ያስወግዱ."

ከ tech.ru የኮሎኬሽን አገልጋይ አለ። ከ OVH, Hetzner, AWS ጋር ማወዳደር ይቻላል. ይህንን ችግር ለመፍታት ከ tech.ru ጋር ትብብር የበለጠ ውጤታማ ይሆናል.

አገልጋዩ ዴቢያን 9 ተጭኗል።

አገልጋይ 2 በይነገጾች `eno1` እና `eno2` አለው። የመጀመሪያው ያልተገደበ ነው, እና ሁለተኛው ፈጣን ነው, በቅደም.

በ `eno3` በይነገጽ ላይ 0 የማይንቀሳቀሱ አይፒ አድራሻዎች፣ XX.XX.XX.X1 እና XX.XX.XX.X2 እና XX.XX.XX.X1 እና XX.XX.XX.X5 በ`eno2` በይነገጽ ላይ አሉ። .

ይገኛል XXXX:XXX:XXX:XXX::/64 ለ`eno6` በይነገጽ የተመደበው የIPv1 አድራሻዎች እና ከእሱ XXXX:XXX:XXX:XXX:1:2::/96 በጥያቄዬ ለ `eno2` ተመድቧል።

3 ጎራዎች `domain1.com`፣ `domain2.com`፣ `domain3.com` አሉ። ለ `domain1.com` እና `domain3.com` የSSL እውቅና ማረጋገጫ አለ።

የመልእክት ሳጥን ` ማገናኘት የምፈልገው የጉግል መለያ አለኝ[ኢሜል የተጠበቀ]` (ፖስታ መቀበል እና በቀጥታ ከጂሜይል በይነገጽ መልእክት መላክ)።
የመልእክት ሳጥን ` ሊኖረው ይገባል።[ኢሜል የተጠበቀ]`፣ በጂሜይልዬ ውስጥ ማየት የምፈልገው የፖስታ ቅጂ። እና በ` ወክሎ የሆነ ነገር መላክ መቻል ብርቅ ነው።[ኢሜል የተጠበቀ]`በድር በይነገጽ በኩል።

የመልእክት ሳጥን ` ሊኖረው ይገባል።[ኢሜል የተጠበቀ]ኢቫኖቭ ከአይፎኑ ይጠቀማል።

የተላኩ ኢሜይሎች ሁሉንም ዘመናዊ የጸረ-አይፈለጌ መልእክት መስፈርቶችን ማክበር አለባቸው።
በህዝብ አውታረ መረቦች ውስጥ የቀረበው ከፍተኛው የምስጠራ ደረጃ መሆን አለበት።
ኢሜይሎችን ለመላክም ሆነ ለመቀበል የIPv6 ድጋፍ መኖር አለበት።
ኢሜይሎችን ፈጽሞ የማይሰርዝ SpamAssassin መሆን አለበት። እና ወይ ያፈልቃል ወይም ይዘላል ወይም ወደ IMAP አይፈለጌ መልእክት አቃፊ ይልካል።
SpamAssassin ራስ-ትምህርት መዋቀር አለበት: ደብዳቤውን ወደ አይፈለጌ መልእክት አቃፊ ካዛወርኩ, ከዚህ ይማራል; ከአይፈለጌ መልእክት ማህደር ደብዳቤ ካንቀሳቀስኩ ይማራል። SpamAssassin የሥልጠና ውጤቶች - በአይፈለጌ መልእክት አቃፊ ውስጥ የደብዳቤው መምታት ላይ ተጽዕኖ ያሳድራል።
ፒኤችፒ ስክሪፕቶች በተሰጠው አገልጋይ ላይ ማንኛውንም ጎራ በመወከል ደብዳቤ መላክ መቻል አለባቸው።
IPV6 በሌለው ደንበኛ ላይ IPv6 የመጠቀም ችሎታ ያለው የOpenvpn አገልግሎት መኖር አለበት።

በመጀመሪያ IPv6 ን ጨምሮ በይነገጾችን እና ራውቲንግን ማዋቀር ያስፈልግዎታል።
ከዚያ በIPv4 በኩል የሚገናኝ እና ለደንበኛው የማይንቀሳቀስ IPv6 አድራሻ የሚያቀርበው OpenVPN ን ማዋቀር ያስፈልግዎታል። ይህ ደንበኛ በአገልጋዩ ላይ ሁሉንም የIPv6 አገልግሎቶችን ማግኘት እና በበይነመረብ ላይ የ IPv6 ግብዓቶችን ማግኘት ይችላል።
ከዚያ ኢሜይሎችን + SPF + DKIM + rDNS እና ሌሎች ትናንሽ ነገሮችን ለመላክ Postfix ን ማዋቀር ያስፈልግዎታል።
ከዚያ Dovecot ን ማዋቀር እና Multidomainን ማዋቀር ያስፈልግዎታል።
ከዚያ 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 የቨርቹዋል NIC ስም ነው።
XX.XX.XX.X0 - IPv4 #1 በ eno1.
XX.XX.XX.X1 - IPv4 #2 በ eno1.
XX.XX.XX.X2 - IPv4 #3 በ eno1.
XX.XX.XX.X5 - IPv4 #1 በ eno2.
XX.XX.XX.1 - IPv4 መግቢያ.
XXXX:XXX:XXX:XXX::/64 - IPv6 ለመላው አገልጋይ።
XXXX:XXX:XXXX:XXX:1:2::/96 - IPv6 ለ eno2፣ ሌላው ሁሉ ከውጭ ወደ 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” ምልክት የተደረገበት -> ወደ 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

ይህ የአይፒv6 አድራሻን ወደ በይነገጽ ማከል ነው። አንድ መቶ አድራሻዎች ከፈለጉ, በዚህ ፋይል ውስጥ አንድ መቶ መስመሮች.

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:XXX:XXX:XXXX:1:1:እህአአ:አአአኢኢኢኢኖ1 ላይ ለተወሰኑ ጣቢያዎች ወይም አገልግሎቶች መመደብ ያለባቸው አድራሻዎች ናቸው።
XXXX:XXX:XXX:XXX:XXXX:1:2:እህአአ:አአአኢኢኢኢኖ2 ላይ ለተወሰኑ ጣቢያዎች ወይም አገልግሎቶች መመደብ ያለባቸው አድራሻዎች ናቸው።
XXXX:XXX:XXX:XXX:XXX:1:3:አአአ:አአአ ለ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

እነዚህ ቅንብሮች ከሌሉ፣ ከOpenVPN ደንበኛ የሚመጣው የIPv6 ትራፊክ ወደ ዓለም አይሄድም።

ሌሎቹ መቼቶች ምንም ተዛማጅነት የላቸውም ወይም ለምን እንደሆነ አላስታውስም።
ግን እንደዚያ ከሆነ “እንደሆነ” ትቼዋለሁ።

በዚህ ፋይል ላይ የሚደረጉ ለውጦች አገልጋዩን እንደገና ሳይጀምሩ እንዲነሱ ትዕዛዙን ማስኬድ ያስፈልግዎታል፡-

sysctl -p

ስለ "ጠረጴዛ" ደንቦች ተጨማሪ ዝርዝሮች: habr.com/post/108690

============ OpenVPN ==============

OpenVPN IPv4 ያለ iptables አይሰራም።

ለ 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

ዓ.ዓ.ዓ.የአካባቢው ማሽን የማይንቀሳቀስ IPv4 አድራሻዬ ነው።
10.8.0.0/24 - IPv4 openvpn አውታረ መረብ. IPv4 አድራሻዎች ለ openvpn ደንበኞች።
የደንቦቹ ቅደም ተከተል አስፈላጊ ነው.

iptables -A INPUT -p udp -s YY.YY.YY.YY --dport 1194 -j ACCEPT
iptables -A FORWARD -i tun0 -o eno1 -j ACCEPT
...
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -j DROP
iptables -A FORWARD -p udp --dport 1194 -j DROP

እኔ ብቻ 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 ፓኬጆችን ለማስተላለፍ ከእነዚህ ትዕዛዞች ውስጥ አንዱን መመዝገብ አለብዎት።

ለተለያዩ ጉዳዮች, አንዱ አማራጮች ተስማሚ አይደለም.
ሁለቱም ትዕዛዞች ለጉዳዬ ተስማሚ ናቸው።
ሰነዶቹን ካነበብኩ በኋላ የመጀመሪያውን አማራጭ መርጫለሁ, ምክንያቱም አነስተኛ ሲፒዩ ስለሚበላ.

ዳግም ከተነሳ በኋላ ሁሉም የ iptables ቅንብሮች እንዲነሱ፣ የሆነ ቦታ ማስቀመጥ ያስፈልግዎታል።

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

እነዚህ ስሞች በአጋጣሚ አልተመረጡም. በ "iptables-ቋሚ" ጥቅል ጥቅም ላይ ይውላሉ.

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

ሁሉንም ፋይሎች ወደ አንድ የኦፕቪን ፋይል የሚያዋህድ ስክሪፕት እናዘጋጅ።

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" መለያ በፊት ወዲያውኑ "key-direction 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 ለደንበኞች የአይፒv6 መግቢያ በርን በራሱ እንዴት ማዋቀር እንደሚቻል እስካሁን አያውቅም።
ይህንን ለእያንዳንዱ ደንበኛ "በእጅ" ማስተላለፍ አለብዎት.

# Run client-specific script on connection and disconnection
script-security 2
client-connect "/usr/bin/sudo -u root /etc/openvpn/server-clientconnect.sh"
client-disconnect "/usr/bin/sudo -u root /etc/openvpn/server-clientdisconnect.sh"

ፋይል "/etc/openvpn/server-clientconnect.sh"፡-

#!/bin/sh

# Check client variables
if [ -z "$ifconfig_pool_remote_ip" ] || [ -z "$common_name" ]; then
        echo "Missing environment variable."
        exit 1
fi

# Load server variables
. /etc/openvpn/variables

ipv6=""

# Find out if there is a specific config with fixed IPv6 for this client
if [ -f "/etc/openvpn/ccd/$common_name" ]; then
        # Get fixed IPv6 from client config file
        ipv6=$(sed -nr 's/^.*ifconfig-ipv6-push[ t]+([0-9a-fA-F:]+).*$/1/p' "/etc/openvpn/ccd/$common_name")
        echo $ipv6
fi

# Get IPv6 from IPv4
if [ -z "$ipv6" ]; then
        ipp=$(echo "$ifconfig_pool_remote_ip" | cut -d. -f4)
        if ! [ "$ipp" -ge 2 -a "$ipp" -le 254 ] 2>/dev/null; then
                echo "Invalid IPv4 part."
                exit 1
        fi
        hexipp=$(printf '%x' $ipp)
        ipv6="$prefix$hexipp"
fi

# Create proxy rule
/sbin/ip -6 neigh add proxy $ipv6 dev eno1

ፋይል "/etc/openvpn/server-clientdisconnect.sh"፡-

#!/bin/sh

# Check client variables
if [ -z "$ifconfig_pool_remote_ip" ] || [ -z "$common_name" ]; then
        echo "Missing environment variable."
        exit 1
fi

# Load server variables
. /etc/openvpn/variables

ipv6=""

# Find out if there is a specific config with fixed IPv6 for this client
if [ -f "/etc/openvpn/ccd/$common_name" ]; then
        # Get fixed IPv6 from client config file
        ipv6=$(sed -nr 's/^.*ifconfig-ipv6-push[ t]+([0-9a-fA-F:]+).*$/1/p' "/etc/openvpn/ccd/$common_name")
fi

# Get IPv6 from IPv4
if [ -z "$ipv6" ]; then
        ipp=$(echo "$ifconfig_pool_remote_ip" | cut -d. -f4)
        if ! [ "$ipp" -ge 2 -a "$ipp" -le 254 ] 2>/dev/null; then
                echo "Invalid IPv4 part."
                exit 1
        fi
        hexipp=$(printf '%x' $ipp)
        ipv6="$prefix$hexipp"
fi

# Delete proxy rule
/sbin/ip -6 neigh del proxy $ipv6 dev eno1

ሁለቱም ስክሪፕቶች የ"/etc/openvpn/variables" ፋይልን ይጠቀማሉ፡-

# Subnet
prefix=XXXX:XXXX:XXXX:XXXX:2:
# netmask
prefixlen=112

ለምን እዚህ ተፃፈ - ለማስታወስ ይከብደኛል።

አሁን እንግዳ ይመስላል netmask = 112 (እዚያው 96 መሆን አለበት).
እና ቅድመ ቅጥያው እንግዳ ነው፣ ከ tun0 አውታረ መረብ ጋር አይዛመድም።
ግን እሺ እንደዛው እተወዋለሁ።

cipher DES-EDE3-CBC

ይህ ለሁሉም ሰው የሚሆን አይደለም - ግንኙነቱን ለማመስጠር ይህን ዘዴ መርጫለሁ.

ስለ 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 እንዴት እንደሚሰራ መረዳት ጀመርኩ።

ስለዚህ ኤስኤስኤልን እንዴት መጠቀም እንዳለብኝ የመግለፅ ነፃነትን እወስዳለሁ (“እንዴት ነው የሚሰራው?” እና “ለምን ይሰራል?” ለሚሉት ጥያቄዎች መልስ ሳልሰጥ።

የዘመናዊ ምስጠራ መሠረት የቁልፍ ጥንድ (ሁለት በጣም ረጅም የቁምፊዎች ሕብረቁምፊዎች) መፍጠር ነው።

አንደኛው "ቁልፍ" የግል ነው, ሌላኛው ቁልፍ "የህዝብ" ነው. የግል ቁልፉ በጣም በጥንቃቄ ሚስጥራዊ ነው. የአደባባይ ቁልፍን ለሁሉም እናሰራጫለን።

የወል ቁልፉን ተጠቅመህ የግላዊ ቁልፉ ባለቤት ብቻ መፍታት እንዲችል የጽሑፍ ሕብረቁምፊ ማመስጠር ትችላለህ።
ደህና ፣ ያ አጠቃላይ የቴክኖሎጂ መሠረት ነው።

ደረጃ #1 - https ጣቢያዎች.
አሳሹ ጣቢያውን ሲደርስ ከድር አገልጋይ ጣቢያው https መሆኑን ይማራል እና ስለዚህ የህዝብ ቁልፉን ይጠይቃል።
የድር አገልጋዩ የህዝብ ቁልፉን ይሰጣል። አሳሹ http-ጥያቄውን ለማመስጠር የህዝብ ቁልፉን ይጠቀማል እና ይልካል።
የ http-request ይዘት ሊነበብ የሚችለው የግል ቁልፉ ባለው ሰው ብቻ ነው፣ ማለትም እየደረሰ ያለው አገልጋይ ብቻ ነው።
የኤችቲቲፒ ጥያቄ ቢያንስ ዩአርአይ ይዟል። ስለዚህ አንድ አገር ወደ አጠቃላይ ጣቢያው ሳይሆን ወደ አንድ የተወሰነ ገጽ መዳረሻን ለመገደብ ከሞከረ ይህ ለ https ጣቢያዎች ሊከናወን አይችልም።

ደረጃ #2 - የተመሰጠረ ምላሽ።
የድር አገልጋዩ በመንገድ ላይ በቀላሉ ሊነበብ የሚችል ምላሽ ይሰጣል.
መፍትሄው እጅግ በጣም ቀላል ነው - አሳሹ በአካባቢው ለእያንዳንዱ https ጣቢያ አንድ አይነት የግል-የወል ቁልፍ ጥንድ ያመነጫል።
እና የጣቢያው የህዝብ ቁልፍ ጥያቄ ጋር, የአካባቢውን የህዝብ ቁልፍ ይልካል.
የድር አገልጋዩ ያስታውሰዋል እና http-response ን ሲልክ በአንድ የተወሰነ ደንበኛ ይፋዊ ቁልፍ ያመስጥረዋል።
አሁን http-ምላሽ ዲክሪፕት ሊደረግ የሚችለው በደንበኛው አሳሽ የግል ቁልፍ ባለቤት ብቻ ነው (ይህም ደንበኛው ራሱ)።

ደረጃ ቁጥር 3 - በይፋዊ ቻናል ላይ ደህንነቱ የተጠበቀ ግንኙነት መፍጠር።
በምሳሌ ቁጥር 2 ላይ የተጋላጭነት ችግር አለ - ምንም ነገር በጎ ፈላጊዎች http-ጥያቄውን ከመጥለፍ እና ስለ ህዝባዊ ቁልፍ መረጃን ከማርትዕ የሚከለክላቸው ነገር የለም።
ስለዚህ፣ መካከለኛው የመገናኛ ቻናል እስኪቀየር ድረስ የተላኩ እና የተቀበሏቸውን መልዕክቶች በሙሉ ይዘት ማየት ይችላል።
ይህንን ማስተናገድ እጅግ በጣም ቀላል ነው - የአሳሹን የህዝብ ቁልፍ በድር አገልጋይ የህዝብ ቁልፍ የተመሰጠረ መልእክት ብቻ ይላኩ።
የድር አገልጋዩ በመጀመሪያ እንደ "የእርስዎ ይፋዊ ቁልፍ እንደዚህ ነው" የሚል ምላሽ ይልካል እና ይህን መልእክት በተመሳሳዩ የአደባባይ ቁልፍ ያመስጥረዋል።
አሳሹ መልሱን ይመለከታል - "የአደባባይ ቁልፍዎ እንደዚህ ነው" የሚለው መልእክት ከደረሰ ይህ የግንኙነት ጣቢያ ደህንነቱ የተጠበቀ መሆኑን 100% ዋስትና ነው።
ምን ያህል አስተማማኝ ነው?
እንዲህ ዓይነቱን ደህንነቱ የተጠበቀ የግንኙነት ጣቢያ መፍጠር በፒንግ * 2 ፍጥነት ይከሰታል። ለምሳሌ 20 ሚ.
አጥቂው የአንደኛውን ወገን የግል ቁልፍ አስቀድሞ ሊኖረው ይገባል። ወይም የግል ቁልፍን በሁለት ሚሊሰከንዶች ውስጥ ያንሱ።
አንድ ዘመናዊ የግል ቁልፍ መስበር በሱፐር ኮምፒውተር ላይ አሥርተ ዓመታትን ይወስዳል።

ደረጃ 4 - የህዝብ ቁልፎች የህዝብ ዳታቤዝ።
በግልጽ ለማየት እንደሚቻለው በዚህ ታሪክ ውስጥ አጥቂ በደንበኛው እና በአገልጋዩ መካከል ባለው የግንኙነት ጣቢያ ላይ ሊቀመጥ ይችላል።
ለደንበኛው እንደ አገልጋይ የመታየት ችሎታ እና አገልጋዩ እንደ ደንበኛ የመታየት ችሎታ። እና በሁለቱም አቅጣጫዎች ጥንድ ቁልፎችን አስመስለው.
ከዚያ አጥቂው ሁሉንም ትራፊክ ያያል እና ትራፊኩን "ማረም" ይችላል።
ለምሳሌ ገንዘብ የሚልኩበትን አድራሻ ይቀይሩ ወይም የይለፍ ቃሉን ከመስመር ላይ ባንክ ይቅዱ ወይም "የሚቃወም" ይዘትን ያግዱ።
እንደዚህ አይነት ሰርጎ ገቦችን ለመዋጋት ለእያንዳንዱ https ድረ-ገጽ የህዝብ ቁልፎችን የያዘ የህዝብ ዳታቤዝ ይዘው መጡ።
እያንዳንዱ አሳሽ 200 የሚያህሉ እንደዚህ ያሉ የውሂብ ጎታዎች መኖራቸውን "ያውቀዋል". በእያንዳንዱ አሳሽ አስቀድሞ ተጭኗል።
"እውቀት" ከእያንዳንዱ የምስክር ወረቀት በወል ቁልፍ የተደገፈ ነው። ያም ማለት ከእያንዳንዱ የተለየ የምስክር ወረቀት ባለስልጣን ጋር ያለው ግንኙነት ውሸት ሊሆን አይችልም.

አሁን SSL ለ https እንዴት መጠቀም እንደሚቻል ቀላል ግንዛቤ አለ።
አእምሮዎን ካንቀሳቀሱ ልዩ አገልግሎቶች በዚህ መዋቅር ውስጥ የሆነ ነገር እንዴት እንደሚሰርጉ ግልጽ ይሆናል. ግን ከፍተኛ ጥረት ያስከፍላቸዋል።
እና ከኤንኤስኤ ወይም ሲአይኤ ያነሱ ድርጅቶች ነባሩን የጥበቃ ደረጃ ለቪፕ እንኳን መስበር ፈጽሞ የማይቻል ነገር ነው።

እንዲሁም ስለ ssh ግንኙነቶች እጨምራለሁ. እንዴት መሆን እንደሚቻል, ምንም የህዝብ ቁልፎች የሉም. ችግሩ የሚፈታው በሁለት መንገድ ነው።
ssh-by-password አማራጭ፡-
በመጀመሪያው ግንኙነት የssh ደንበኛ ከ ssh አገልጋይ አዲስ የህዝብ ቁልፍ እንዳለን ማስጠንቀቅ አለበት።
እና ከተጨማሪ ግንኙነቶች ጋር “ከ ssh አገልጋይ አዲስ የህዝብ ቁልፍ” ማስጠንቀቂያ ከታየ እርስዎን ለማዳመጥ እየሞከሩ ነው ማለት ነው።
ወይም በመጀመሪያ ግንኙነት ሰምተው ነበር፣ እና አሁን ያለ አማላጅ ከአገልጋዩ ጋር ይገናኛሉ።
እንደ እውነቱ ከሆነ, የሽቦ ቀረጻ እውነታ በቀላሉ, በፍጥነት እና ያለምንም ጥረት በመገለጡ ምክንያት, ይህ ጥቃት ለአንድ ደንበኛ ልዩ በሆኑ ጉዳዮች ላይ ብቻ ጥቅም ላይ ይውላል.

ssh-በ-ቁልፍ አማራጭ፡-
ፍላሽ አንፃፊ እንወስዳለን ፣ ለ ssh አገልጋይ የግል ቁልፍ እንጽፋለን (ለዚህ ውሎች እና ብዙ አስፈላጊ ልዩነቶች አሉ ፣ ግን እኔ የምጽፈው ትምህርታዊ ፕሮግራም እንጂ የአጠቃቀም መመሪያ አይደለም)።
የህዝብ ቁልፉን የ ssh ደንበኛ በሚገኝበት ማሽን ላይ እንተዋለን እና ምስጢሩንም እንይዘዋለን።
ፍላሽ አንፃፊውን ወደ አገልጋዩ እናመጣለን፣ እንለጥፈው፣ የግል ቁልፉን ገልብጠን ፍላሽ አንፃፊውን አቃጥለን አመዱን በነፋስ እንበትነዋለን (ወይም ቢያንስ በዜሮ ፓዲንግ እንቀርጸዋለን)።
ያ ብቻ ነው - ከእንደዚህ አይነት ቀዶ ጥገና በኋላ እንዲህ ያለውን የ ssh ግንኙነት ለመጥለፍ የማይቻል ይሆናል. በእርግጥ በ 10 ዓመታት ውስጥ በሱፐር ኮምፒዩተር ላይ ትራፊክ ማየት ይቻላል - ግን ይህ የተለየ ታሪክ ነው.

ከርዕሱ ውጪ ይቅርታ እጠይቃለሁ።

ስለዚህ, አሁን ጽንሰ-ሐሳቡ ይታወቃል. የ ssl ሰርተፍኬት ስለመፍጠር ፍሰት እነግራችኋለሁ።

በ "openssl genrsa" እገዛ የግል ቁልፍ እና "ባዶ" ለህዝብ ቁልፍ እንፈጥራለን.
ለሶስተኛ ወገን ኩባንያ "ባዶ" እንልካለን, ለቀላል የምስክር ወረቀት 9 ዶላር እንከፍላለን.

ከጥቂት ሰዓታት በኋላ፣ ከዚህ የሶስተኛ ወገን ኩባንያ የኛን “የህዝብ” ቁልፍ እና በርካታ የህዝብ ቁልፎችን እንቀበላለን።

ለምን የሶስተኛ ወገን ኩባንያ ለህዝብ ቁልፌ መመዝገቢያ የሚከፍለው የተለየ ጉዳይ ነው፣ እዚህ አንመለከተውም።

አሁን የጽሑፉ ትርጉም ምን እንደሆነ ግልጽ ነው-

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

የ"/ወዘተ/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 = +

ምናልባት ብዙዎች አያውቁም፣ስለዚህ ይህ pasma ደረጃውን የጠበቀ ቁምፊ ነው፣ እና በአብዛኛዎቹ ዘመናዊ የፖስታ አገልጋዮች ይደገፋል።

ለምሳሌ የመልእክት ሳጥን ካለህ[ኢሜል የተጠበቀ]» ለመላክ ሞክር[ኢሜል የተጠበቀ]- ምን እንደሚፈጠር ተመልከት.

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:

በግራ በኩል መደበኛ መግለጫዎች አሉ. በቀኝ በኩል ፊደሉን የሚያመለክት መለያ አለ.
በመለያው መሠረት Postfix - ለአንድ የተወሰነ ፊደል ጥቂት ተጨማሪ የማዋቀር መስመሮችን ግምት ውስጥ ያስገባል።

ፖስትፊክስ ለአንድ የተወሰነ ፊደል እንዴት እንደገና እንደሚዋቀር በ"master.cf" ውስጥ ይገለጻል።

መስመሮች 4, 5, 6 ዋናዎቹ ናቸው. የትኛውን ጎራ በመወከል ደብዳቤ እንልካለን - እንደዚህ አይነት መለያ እናደርጋለን.
ነገር ግን ሁልጊዜ በ php ስክሪፕቶች ውስጥ በአሮጌው ኮድ ውስጥ "ከ" መስክ ይገለጻል. ከዚያ የተጠቃሚ ስም ለማዳን ይመጣል።

ጽሑፉ ቀድሞውኑ ሰፊ ነው - nginx + fpm ን በማቀናበር መከፋፈል አልፈልግም።

በአጭሩ - ለእያንዳንዱ ጣቢያ የራሳችንን የሊኑክስ ተጠቃሚ ባለቤት አዘጋጅተናል። እና በዚህ መሰረት የእርስዎ fpm-pool.

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}

እነዚህ ከ spamassasin ጋር የተገናኙ ቅንብሮች ናቸው፣ በዛ ላይ ተጨማሪ።

submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

በፖርት 587 በኩል ከደብዳቤ አገልጋይ ጋር እንዲገናኙ እንፈቅዳለን።
ይህንን ለማድረግ, መግባት አለብዎት.

policyd-spf  unix  -       n       n       -       0       spawn
    user=policyd-spf argv=/usr/bin/policyd-spf

የ SPF ፍተሻን ያብሩ።

apt-get install postfix-policyd-spf-python

ከላይ ለ SPF ቼኮች ጥቅሉን ይጫኑ።

domain1  unix -       -       n       -       -       smtp
   -o smtp_bind_address=XX.XX.XX.X1
   -o smtp_helo_name=domain1.com
   -o inet_protocols=all
   -o smtp_bind_address6=XXXX:XXXX:XXXX:XXXX:1:1:1:1
   -o syslog_name=postfix-domain1

እና ይህ በጣም የሚስብ ነው. ይህ ከአንድ የተወሰነ IPv4/IPv6 አድራሻ ለተወሰነ ጎራ ኢሜይሎችን የመላክ ችሎታ ነው።

ይህ የሚደረገው ለ rDNS ጥቅም ነው። rDNS የተወሰነ ሕብረቁምፊ በአይፒ አድራሻ እያገኘ ነው።
እና ለፖስታ፣ ይህ ባህሪ ሄሎ ኢሜይሉ ከተላከበት አድራሻ rDNS ጋር በትክክል እንደሚዛመድ ለማረጋገጥ ይጠቅማል።

ሄሎ ደብዳቤው የተላከበትን የፖስታ ጎራ የማይዛመድ ከሆነ፣ የአይፈለጌ መልእክት ነጥቦች ተሰጥተዋል።

ሄሎ ከ rDNS ጋር አያከብርም - ብዙ አይፈለጌ መልዕክት ነጥቦች ተሰጥተዋል።
በዚህ መሠረት እያንዳንዱ ጎራ የራሱ አይፒ አድራሻ ሊኖረው ይገባል።
ለ OVH, በኮንሶል ውስጥ rDNS ን መግለጽ ይቻላል.
ለ tech.ru ጉዳዩ በድጋፍ ተፈቷል.
ለAWS፣ ጉዳዩ የሚፈታው በድጋፍ ነው።
"inet_protocols" እና "smtp_bind_address6" - የIPv6 ድጋፍን እናነቃለን።
ለIPv6፣ rDNS መመዝገብም አለቦት።
"syslog_name" - እና ይህ የምዝግብ ማስታወሻዎችን ለማንበብ ምቾት ነው.

የምስክር ወረቀቶችን ይግዙ እዚህ እንመክራለን.

የPostfix + Dovecot አገናኝ እዚህ በማዘጋጀት ላይ.

የ SPF ቅንብር.

=========== Dovecot ===============

apt-get install dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql dovecot-antispam

mysql ን በማዋቀር, ጥቅሎቹን እራሳቸው ይጫኑ.

ፋይል "/etc/dovecot/conf.d/10-auth.conf"

disable_plaintext_auth = yes
auth_mechanisms = plain login

ፍቃድ የተመሰጠረ ብቻ ነው።

ፋይል "/etc/dovecot/conf.d/10-mail.conf"

mail_location = maildir:/var/mail/vhosts/%d/%n

እዚህ ፊደሎች የሚቀመጡበትን ቦታ እንጠቁማለን.

በፋይሎች ውስጥ እንዲቀመጡ እና በጎራ እንዲመደቡ እፈልጋለሁ።

ፋይል "/etc/dovecot/conf.d/10-master.conf"

service imap-login {
  inet_listener imap {
    port = 0
  }
  inet_listener imaps {
    address = XX.XX.XX.X1, XX.XX.XX.X2, XX.XX.XX.X5, [XXXX:XXXX:XXXX:XXXX:1:1:1:1], [XXXX:XXXX:XXXX:XXXX:1:2:1:1], [XXXX:XXXX:XXXX:XXXX:1:1:5:1]
    port = 993
    ssl = yes
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 0
  }
  inet_listener pop3s {
    address = XX.XX.XX.X1, XX.XX.XX.X2, XX.XX.XX.X5, [XXXX:XXXX:XXXX:XXXX:1:1:1:1], [XXXX:XXXX:XXXX:XXXX:1:2:1:1], [XXXX:XXXX:XXXX:XXXX:1:1:5:1]
    port = 995
    ssl = yes
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
    group = postfix
  }
}
service imap {
}
service pop3 {
}
service auth {
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
  }

  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
  user = dovecot
}
service auth-worker {
  user = vmail
}
service dict {
  unix_listener dict {
  }
}

ይህ ዋናው የእርግብ ውቅር ፋይል ነው።
እዚህ ደህንነቱ ያልተጠበቀ ግንኙነቶችን እናሰናክላለን።
እና አስተማማኝ ግንኙነቶችን አንቃ።

ፋይል "/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
}

ኤስኤስኤልን ያዋቅሩ። ኤስኤስኤል እንደሚያስፈልግ እንጠቁማለን።
እና የምስክር ወረቀቱ ራሱ። እና አስፈላጊ ዝርዝር "አካባቢያዊ" መመሪያ ነው. ከየትኛው አካባቢያዊ IPv4 ጋር ሲገናኙ የትኛውን የኤስኤስኤል ሰርተፍኬት መጠቀም እንዳለበት ይገልጻል።

በነገራችን ላይ IPv6 እዚህ አልተዋቀረም, ይህንን ጉድለት እንደ ክር በኋላ አስተካክለው.
XX.XX.XX.X5 (domain2) - ምንም የምስክር ወረቀት የለም. ደንበኞችን ለማገናኘት domain1.com ን መግለጽ ያስፈልግዎታል።
XX.XX.XX.X2 (domain3) - የምስክር ወረቀት አለ, ደንበኞችን ለማገናኘት domain1.com ወይም domain3.com መግለጽ ይችላሉ.

ፋይል "/etc/dovecot/conf.d/15-lda.conf"

protocol lda {
  mail_plugins = $mail_plugins sieve
}

ይህ በኋላ ላይ ለ spamassassin ያስፈልጋል።

ፋይል "/etc/dovecot/conf.d/20-imap.conf"

protocol imap {
  mail_plugins = $mail_plugins antispam
}

ይህ ፀረ-አይፈለጌ መልዕክት ፕለጊን ነው። ወደ / ከ "አይፈለጌ መልእክት" አቃፊ በሚተላለፍበት ጊዜ ስፓምሳሲን ለማሰልጠን ያስፈልጋል.

ፋይል "/etc/dovecot/conf.d/20-pop3.conf"

protocol pop3 {
}

ልክ እንደዚህ ያለ ፋይል አለ.

ፋይል "/etc/dovecot/conf.d/20-lmtp.conf"

protocol lmtp {
  mail_plugins = $mail_plugins sieve
  postmaster_address = [email protected]
}

lmtp በማቀናበር ላይ።

ፋይል "/etc/dovecot/conf.d/90-antispam.conf"

plugin {
  antispam_backend = pipe
  antispam_trash = Trash;trash
  antispam_spam = Junk;Spam;SPAM
  antispam_pipe_program_spam_arg = --spam
  antispam_pipe_program_notspam_arg = --ham
  antispam_pipe_program = /usr/bin/sa-learn
  antispam_pipe_program_args = --username=%Lu
}

ወደ / ከ "አይፈለጌ መልእክት" አቃፊ በሚተላለፉበት ጊዜ የ Spamassasin የሥልጠና ቅንብሮች.

ፋይል "/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 spamassassin ማሽን መማሪያ መቼቶች ናቸው።

የተቀሩት የ spamassassin ቅንጅቶች በአንቀጹ ውስጥ ቀደም ብለው ተተግብረዋል.

አጠቃላይ ቅንብር "Spamassassin".
አዲስ የአይፈለጌ መልእክት ኢሜይሎችን ወደ IMAP "አይፈለጌ መልእክት" አቃፊ ስለመውሰድ.
ስለ አንድ ቀላል የ Dovecot + SpamAssassin ስብስብ.
በ imap አቃፊዎች ውስጥ ሆሄያትን ሲያንቀሳቅሱ የ spamassasin የመማር ንድፈ ሀሳብን እንዲያነቡ እመክራለሁ (እና ጥቅም ላይ እንዲውል አይመከሩት).

============ የማህበረሰብ ይግባኝ ==============

እንዲሁም የተላለፉ ደብዳቤዎችን የደህንነት ደረጃ እንዴት እንደሚጨምር ወደ ማህበረሰቡ አንድ ሀሳብ መጣል እፈልጋለሁ። በፖስታ ርዕስ ውስጥ በጣም ስለተጠመቅሁ።

ተጠቃሚው በደንበኛው ላይ የቁልፍ ጥንድ መፍጠር እንዲችል (አተያይ፣ ተንደርበርድ፣ አሳሽ-ፕለጊን፣ ...)። የህዝብ እና የግል. ይፋዊ - ወደ ዲ ኤን ኤስ ይላኩ። የግል - በደንበኛው ላይ ያስቀምጡ. የደብዳቤ አገልጋዮች ለአንድ የተወሰነ ተቀባይ ለመላክ የወል ቁልፉን መጠቀም ይችላሉ።

እና እንደዚህ ባሉ ፊደሎች አይፈለጌ መልዕክትን ለመከላከል (አዎ, የመልዕክት አገልጋዩ ይዘቱን ማየት አይችልም) - 3 ህጎችን ማስገባት ያስፈልግዎታል:

  1. የግዴታ እውነተኛ DKIM ፊርማ፣ የግዴታ SPF፣ የግዴታ rDNS።
  2. ጸረ-አይፈለጌ መልዕክትን በመማር ርዕስ ላይ የነርቭ አውታረመረብ + የውሂብ ጎታ በደንበኛው በኩል።
  3. የኢንክሪፕሽን አልጎሪዝም ላኪው ወገን ከተቀባዩ ወገን 100 እጥፍ የበለጠ የሲፒዩ ሃይል እንዲያጠፋ መሆን አለበት።

ከህዝባዊ ደብዳቤዎች በተጨማሪ “ደህንነቱ የተጠበቀ የመልእክት ልውውጥ ለመጀመር” የስጦታ ደብዳቤ ደረጃን ያዘጋጁ። ከተጠቃሚዎች አንዱ (የመልእክት ሳጥን) ከሌላ የመልእክት ሳጥን ጋር አባሪ የያዘ ደብዳቤ ይልካል። በደብዳቤው ውስጥ ፣ ለደብዳቤዎች ደህንነቱ የተጠበቀ የግንኙነት ሰርጥ ለመጀመር የጽሑፍ-አረፍተ ነገር እና የመልእክት ሳጥኑ ባለቤት የህዝብ ቁልፍ (በደንበኛው በኩል ካለው የግል ቁልፍ ጋር)።

ለእያንዳንዱ የደብዳቤ ልውውጥ በተለይ ሁለት ቁልፎችን መስራት ትችላለህ። ተቀባዩ ተጠቃሚ ይህን ቅናሽ ተቀብሎ ይፋዊ ቁልፉን መላክ ይችላል (እንዲሁም ለዚህ ደብዳቤ የተዘጋጀ)። በመቀጠል, የመጀመሪያው ተጠቃሚ የአገልግሎት መቆጣጠሪያ ደብዳቤ (በሁለተኛው ተጠቃሚ የህዝብ ቁልፍ የተመሰጠረ) ይልካል, ሁለተኛው ተጠቃሚ እንደደረሰው የተቋቋመውን የግንኙነት ጣቢያ አስተማማኝ አድርጎ ሊቆጥረው ይችላል. ከዚያ ሁለተኛው ተጠቃሚ የቁጥጥር ደብዳቤ ይልካል - እና ከዚያ የመጀመሪያው ተጠቃሚ የተፈጠረውን ሰርጥ ደህንነቱ የተጠበቀ እንደሆነ ሊቆጥረው ይችላል።

በመንገድ ላይ ያሉትን ቁልፎች መጥለፍን ለመዋጋት በፕሮቶኮሉ ውስጥ ፍላሽ አንፃፊን በመጠቀም ቢያንስ አንድ የህዝብ ቁልፍን ለማስተላለፍ እድሉን መስጠት ያስፈልጋል ።

እና በጣም አስፈላጊው ነገር ሁሉም ይሰራል (ጥያቄው "ለዚህ ማን ይከፍላል?")
ለ 10 ዓመታት ከ$3 የሚያወጡ የፖስታ የምስክር ወረቀቶችን ያስተዋውቁ። ላኪው በዲ ኤን ኤስ ውስጥ "የእኔ ይፋዊ ቁልፎቼ እዚያ አሉ" ብሎ እንዲገልጽ የሚያስችለው የትኛው ነው። እና አስተማማኝ ግንኙነት ለመጀመር እድሉን ይሰጣሉ. በተመሳሳይ ጊዜ - እንደዚህ ያሉ ግንኙነቶችን በነጻ ለመቀበል.
gmail በመጨረሻ ተጠቃሚዎቹን ገቢ እየፈጠረ ነው። በ 10 ዓመታት ውስጥ ለ 3 ዶላር - ደህንነቱ የተጠበቀ የመልእክት መስመሮችን የመፍጠር መብት።

=========== መደምደሚያ ===============

ሙሉውን ጽሁፍ ለመፈተሽ ለአንድ ወር የተለየ አገልጋይ ተከራይቼ በssl ሰርተፍኬት ጎራ ልገዛ ነበር።

ነገር ግን የህይወት ሁኔታዎች ተፈጥረዋል ስለዚህ ይህ ጉዳይ ለ 2 ወራት ያህል ዘልቋል.
እና ነፃ ጊዜ እንደገና ሲገለጥ ፣ ጽሑፉን እንደነበረው ለማተም ወሰንኩ እና ህትመቱ ለሌላ ዓመት እንዲቆይ አላደረገም።

እንደ “ነገር ግን እዚህ በበቂ ሁኔታ አልተገለጸም” ያሉ ብዙ ጥያቄዎች ካሉ፣ አሁንም የተወሰነ አገልጋይ በአዲስ ጎራ እና አዲስ የኤስኤስኤል ሰርተፍኬት ለመውሰድ እና የበለጠ በዝርዝር ለመግለጽ ጥንካሬ ሊኖር ይችላል። በአስፈላጊ ሁኔታ, ሁሉንም ያመለጡ አስፈላጊ ዝርዝሮችን መለየት.

እንዲሁም በደብዳቤ የምስክር ወረቀቶች ሀሳብ ላይ አስተያየት መቀበል እፈልጋለሁ። ሀሳቡን ከወደዱት, ለ rfc ረቂቅ ለመጻፍ ጥንካሬን ለማግኘት እሞክራለሁ.

የአንድን ጽሑፍ ትላልቅ ቁርጥራጮች በሚገለበጡበት ጊዜ, የዚህን ጽሑፍ አገናኝ ያመልክቱ.
ወደ ሌላ ቋንቋ ሲተረጉሙ፣ ወደዚህ መጣጥፍ የሚወስድ አገናኝ ያቅርቡ።
እኔ ራሴ ወደ እንግሊዝኛ ለመተርጎም እሞክራለሁ እና ማጣቀሻዎችን ለመተው እሞክራለሁ።


ምንጭ: hab.com

አስተያየት ያክሉ