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

هي آرٽيڪل هڪ جديد ميل سرور ڪيئن ترتيب ڏيڻ بابت آهي.
پوسٽ فڪس + ڊوڪوٽ. SPF + DKIM + rDNS. IPv6 سان.
TSL انڪرپشن سان. گھڻن ڊومينز جي مدد سان - ھڪڙو حقيقي SSL سرٽيفڪيٽ سان حصو.
اينٽي اسپام تحفظ سان ۽ ٻين ميل سرورز کان اعليٰ اينٽي اسپام ريٽنگ.
گھڻن جسماني انٽرفيس کي سپورٽ ڪري ٿو.
OpenVPN سان، جنهن جو ڪنيڪشن IPv4 ذريعي آهي، ۽ جيڪو IPv6 مهيا ڪري ٿو.

جيڪڏهن توهان نٿا چاهيو ته اهي سڀ ٽيڪنالاجيون سکڻ، پر هڪ اهڙو سرور قائم ڪرڻ چاهيو، ته پوءِ هي مضمون توهان لاءِ آهي.

مضمون هر تفصيل کي بيان ڪرڻ جي ڪوشش نه ڪندو آهي. وضاحت ان طرف وڃي ٿي جيڪا معياري طور تي ترتيب نه ڏني وئي آهي يا صارف جي نقطي نظر کان اهم آهي.

ميل سرور قائم ڪرڻ جي حوصلا افزائي منهنجي هڪ ڊگهي وقت کان خواب آهي. اهو آواز بيوقوف ٿي سگهي ٿو، پر IMHO، اهو توهان جي پسنديده برانڊ کان نئين ڪار جو خواب ڏسڻ کان گهڻو بهتر آهي.

IPv6 قائم ڪرڻ لاءِ ٻه حوصلا آهن. هڪ آئي ٽي ماهر کي زنده رهڻ لاءِ مسلسل نئين ٽيڪنالاجيون سکڻ جي ضرورت آهي. مان سينسرشپ جي خلاف جنگ ۾ پنهنجو معمولي حصو ڏيڻ چاهيان ٿو.

OpenVPN قائم ڪرڻ جي حوصلا افزائي صرف IPv6 کي مقامي مشين تي ڪم ڪرڻ لاءِ آهي.
ڪيترن ئي فزيڪل انٽرفيس کي ترتيب ڏيڻ جو حوصلو اهو آهي ته منهنجي سرور تي مون وٽ هڪ انٽرفيس آهي ”سست پر لامحدود“ ۽ ٻيو ”تيز پر ٽريف سان“.

Bind سيٽنگون قائم ڪرڻ جي حوصلا افزائي اها آهي ته منهنجو ISP هڪ غير مستحڪم DNS سرور مهيا ڪري ٿو، ۽ گوگل پڻ ڪڏهن ڪڏهن ناڪام ٿيندو. مان ذاتي استعمال لاءِ هڪ مستحڪم DNS سرور چاهيان ٿو.

هڪ مضمون لکڻ جي حوصلا افزائي - مون 10 مهينا اڳ هڪ مسودو لکيو هو، ۽ مون ان کي ٻه ڀيرا ڏٺو آهي. جيتوڻيڪ ليکڪ کي باقاعدي ان جي ضرورت آهي، اتي هڪ وڏو امڪان آهي ته ٻين کي به ان جي ضرورت پوندي.

ميل سرور لاءِ ڪو عالمگير حل ناهي. پر مان ڪجھ لکڻ جي ڪوشش ڪندس جيئن "اھو ڪريو ۽ پوء، جڏھن سڀ ڪجھ ڪم ڪرڻ گھرجي، اضافي سامان اڇلائي."

ڪمپني tech.ru وٽ هڪ کولڪيشن سرور آهي. اهو OVH، Hetzner، AWS سان مقابلو ڪرڻ ممڪن آهي. هن مسئلي کي حل ڪرڻ لاء، tech.ru سان تعاون گهڻو وڌيڪ اثرائتو ٿيندو.

Debian 9 سرور تي نصب ٿيل آهي.

سرور ۾ 2 انٽرفيس آهن `eno1` ۽ `eno2`. پهريون لامحدود آهي، ۽ ٻيو تيز آهي، ترتيب سان.

هتي 3 جامد IP پتا آهن، XX.XX.XX.X0 ۽ XX.XX.XX.X1 ۽ XX.XX.XX.X2 'eno1' انٽرفيس تي ۽ XX.XX.XX.X5 'eno2' انٽرفيس تي .

دستياب XXXX:XXXX:XXXX:XXXX::/64 IPv6 پتي جو هڪ تلاءُ جيڪو 'eno1' انٽرفيس تي لڳايو ويو آهي ۽ ان مان XXXX:XXXX:XXXX:XXXX:1:2::/96 منهنجي درخواست تي 'eno2' کي تفويض ڪيو ويو.

هتي 3 ڊومين آهن `domain1.com`, `domain2.com`, `domain3.com`. هتي هڪ SSL سرٽيفڪيٽ آهي `domain1.com` ۽ `domain3.com` لاءِ.

مون وٽ هڪ گوگل کاتو آهي جنهن سان مان پنهنجي ميل باڪس کي ڳنڍڻ چاهيان ٿو[ايميل محفوظ ٿيل]` (ميل وصول ڪرڻ ۽ ميل موڪلڻ سڌو gmail انٽرفيس مان).
اتي هڪ ميل باڪس هجڻ ضروري آهي[ايميل محفوظ ٿيل]`، اي ميل جي هڪ ڪاپي جنهن مان مان پنهنجي gmail ۾ ڏسڻ چاهيان ٿو. ۽ ان جي طرفان ڪجهه موڪلڻ جي قابل ٿيڻ نادر آهي[ايميل محفوظ ٿيل]`ويب انٽرفيس ذريعي.

اتي هڪ ميل باڪس هجڻ ضروري آهي[ايميل محفوظ ٿيل]'، جيڪو ايوانوف پنهنجي آئي فون مان استعمال ڪندو.

موڪليل اي ميلون سڀني جديد اينٽي اسپام گهرجن سان عمل ڪرڻ گهرجن.
عوامي نيٽ ورڪن ۾ مهيا ڪيل انڪرپشن جي بلند ترين سطح هجڻ گهرجي.
خط موڪلڻ ۽ وصول ڪرڻ ٻنهي لاءِ IPv6 سپورٽ هجڻ گهرجي.
اتي هڪ SpamAssassin هجڻ گهرجي جيڪو ڪڏهن به اي ميلون حذف نه ڪندو. ۽ اهو يا ته اڇو ٿيندو يا ڇڏي ويندو يا IMAP "اسپام" فولڊر ڏانهن موڪليندو.
SpamAssassin آٽو لرننگ کي ترتيب ڏيڻ لازمي آھي: جيڪڏھن مان ھڪڙو خط اسپام فولڊر ڏانھن منتقل ڪندس، اھو ھن مان سکندو؛ جيڪڏهن مان اسپام فولڊر مان هڪ خط منتقل ڪريان ٿو، اهو ان مان سکندو. SpamAssassin ٽريننگ جا نتيجا اثر انداز ٿيڻ گهرجي ته ڇا خط ختم ٿئي ٿو اسپام فولڊر ۾.
PHP اسڪرپٽ کي ڪنهن به ڊومين جي طرفان ڏنل سرور تي ميل موڪلڻ جي قابل هوندو.
اتي هڪ Openvpn سروس هجڻ گهرجي، IPv6 استعمال ڪرڻ جي صلاحيت سان گڏ ڪلائنٽ تي جيڪو IPv6 نه آهي.

پهرين توهان کي انٽرفيس ۽ روٽنگ ترتيب ڏيڻ جي ضرورت آهي، بشمول IPv6.
پوء توهان کي OpenVPN ترتيب ڏيڻ جي ضرورت پوندي، جيڪو IPv4 ذريعي ڳنڍيندو ۽ ڪلائنٽ کي جامد-حقيقي IPv6 پتي سان مهيا ڪندو. هن ڪلائنٽ کي سرور تي سڀني IPv6 خدمتن تائين رسائي هوندي ۽ انٽرنيٽ تي ڪنهن به IPv6 وسيلن تائين رسائي هوندي.
پوءِ توھان کي ترتيب ڏيڻ جي ضرورت پوندي پوسٽ فڪس خط موڪلڻ لاءِ + SPF + DKIM + rDNS ۽ ٻيون ساڳيون شيون.
پوء توهان کي Dovecot ترتيب ڏيڻ ۽ ملٽي ڊومين کي ترتيب ڏيڻ جي ضرورت پوندي.
پوء توهان کي ترتيب ڏيڻ جي ضرورت پوندي SpamAssassin ۽ ترتيب ڏيڻ جي تربيت.
آخرڪار، Bind انسٽال ڪريو.

=========== گھڻن-انٽرفيس ============

انٽرفيس کي ترتيب ڏيڻ لاءِ، توھان کي ھي لکڻو پوندو ”/etc/network/interfaces“.

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eno1
iface eno1 inet static
        address XX.XX.XX.X0/24
        gateway XX.XX.XX.1
        dns-nameservers 127.0.0.1 213.248.1.6
        post-up ip route add XX.XX.XX.0/24 dev eno1 src XX.XX.XX.X0 table eno1t
        post-up ip route add default via XX.XX.XX.1 table eno1t
        post-up ip rule add table eno1t from XX.XX.XX.X0
        post-up ip rule add table eno1t to XX.XX.XX.X0

auto eno1:1
iface eno1:1 inet static
address XX.XX.XX.X1
netmask 255.255.255.0
        post-up ip rule add table eno1t from XX.XX.XX.X1
        post-up ip rule add table eno1t to XX.XX.XX.X1
        post-up   ip route add 10.8.0.0/24 dev tun0 src XX.XX.XX.X1 table eno1t
        post-down ip route del 10.8.0.0/24 dev tun0 src XX.XX.XX.X1 table eno1t

auto eno1:2
iface eno1:2 inet static
address XX.XX.XX.X2
netmask 255.255.255.0
        post-up ip rule add table eno1t from XX.XX.XX.X2
        post-up ip rule add table eno1t to XX.XX.XX.X2

iface eno1 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:1::/64
        gateway XXXX:XXXX:XXXX:XXXX::1
        up   ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:1:1:1/64 dev $IFACE
        up   ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:1:1:2/64 dev $IFACE
        down ip -6 addr del XXXX:XXXX:XXXX:XXXX:1:1:1:1/64 dev $IFACE
        down ip -6 addr del XXXX:XXXX:XXXX:XXXX:1:1:1:2/64 dev $IFACE

# The secondary network interface
allow-hotplug eno2
iface eno2 inet static
        address XX.XX.XX.X5
        netmask 255.255.255.0
        post-up   ip route add XX.XX.XX.0/24 dev eno2 src XX.XX.XX.X5 table eno2t
        post-up   ip route add default via XX.XX.XX.1 table eno2t
        post-up   ip rule add table eno2t from XX.XX.XX.X5
        post-up   ip rule add table eno2t to XX.XX.XX.X5
        post-up   ip route add 10.8.0.0/24 dev tun0 src XX.XX.XX.X5 table eno2t
        post-down ip route del 10.8.0.0/24 dev tun0 src XX.XX.XX.X5 table eno2t

iface eno2 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:2::/96
        up   ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:2:1:1/64 dev $IFACE
        up   ip -6 addr add XXXX:XXXX:XXXX:XXXX:1:2:1:2/64 dev $IFACE
        down ip -6 addr del XXXX:XXXX:XXXX:XXXX:1:2:1:1/64 dev $IFACE
        down ip -6 addr del XXXX:XXXX:XXXX:XXXX:1:2:1:2/64 dev $IFACE

# OpenVPN network
iface tun0 inet6 static
        address XXXX:XXXX:XXXX:XXXX:1:3::/80

اهي سيٽنگون tech.ru ۾ ڪنهن به سرور تي لاڳو ٿي سگهن ٿيون (سپورٽ سان ٿوري تعاون سان) ۽ اهو فوري طور تي ڪم ڪندو جيئن ان کي گهرجي.

جيڪڏهن توهان وٽ تجربو آهي ته ساڳيون شيون قائم ڪرڻ لاءِ Hetzner، OVH، اهو اتي مختلف آهي. وڌيڪ ڏکيو.

eno1 نيٽ ورڪ ڪارڊ #1 جو نالو آهي (سست پر لامحدود).
eno2 نيٽ ورڪ ڪارڊ #2 جو نالو آهي (تيز، پر ٽريف سان).
tun0 OpenVPN کان ورچوئل نيٽ ورڪ ڪارڊ جو نالو آهي.
XX.XX.XX.X0 - IPv4 #1 eno1 تي.
XX.XX.XX.X1 - IPv4 #2 eno1 تي.
XX.XX.XX.X2 - IPv4 #3 eno1 تي.
XX.XX.XX.X5 - IPv4 #1 eno2 تي.
XX.XX.XX.1 - IPv4 گيٽ وي.
XXXX:XXXX:XXXX:XXXX::/64 - IPv6 پوري سرور لاءِ.
XXXX:XXXX:XXXX:XXXX: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

هن حڪم سان اسان رستو سيٽ ڪيو 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 - subnet eno1 کان وڏو هجڻ گهرجي. ٻي صورت ۾، OpenVPN گراهڪن لاءِ IPv6 گيٽ وي کي ترتيب ڏيڻ ممڪن نه ٿيندو.
eno2 - ذيلي نيٽ tun0 کان وڏو هجڻ گهرجي. ٻي صورت ۾، OpenVPN ڪلائنٽ مقامي IPv6 پتي تائين رسائي حاصل ڪرڻ جي قابل نه هوندا.
وضاحت لاءِ، مون 16 جو سب نيٽ قدم چونڊيو، پر جيڪڏھن توھان چاھيو، توھان به ڪري سگھو ٿا ”1“ قدم.
مطابق، 64+16 = 80، ۽ 80+16 = 96.

اڃا به وڌيڪ وضاحت لاءِ:
XXXX:XXXX:XXXX:XXXX:1:1:YYYY:YYYY اهي ايڊريس آهن جيڪي مخصوص سائيٽن يا خدمتن کي eno1 انٽرفيس تي مقرر ڪيا وڃن.
XXXX:XXXX:XXXX:XXXX:1:2:YYYY:YYYY اهي ايڊريس آهن جيڪي مخصوص سائيٽن يا خدمتن کي eno2 انٽرفيس تي مقرر ڪيا وڃن.
XXXX:XXXX:XXXX:XXXX:1:3:YYYY:YYYY اھي پتا آھن جيڪي OpenVPN ڪلائنٽ کي تفويض ڪيا وڃن يا OpenVPN سروس ايڊريس طور استعمال ڪيا وڃن.

نيٽ ورڪ کي ترتيب ڏيڻ لاء، اهو ممڪن آهي ته سرور کي ٻيهر شروع ڪرڻ.
IPv4 تبديليون ورتيون وينديون آهن جڏهن عمل ڪيو ويندو آهي (ان کي اسڪرين ۾ لپيٽڻ جي پڪ ڪريو - ٻي صورت ۾ هي حڪم صرف سرور تي نيٽ ورڪ کي تباهه ڪري ڇڏيندو):

/etc/init.d/networking restart

فائل جي آخر ۾ شامل ڪريو "/etc/iproute2/rt_tables":

100 eno1t
101 eno2t

ان کان سواء، توهان "/etc/network/interfaces" فائل ۾ ڪسٽم ٽيبل استعمال نٿا ڪري سگهو.
انگ اکر منفرد ۽ 65535 کان گهٽ هجڻ گهرجن.

IPv6 تبديليون آساني سان تبديل ڪري سگھجن ٿيون بغير ريبوٽ ڪرڻ، پر ائين ڪرڻ لاءِ توهان کي گهٽ ۾ گهٽ ٽي حڪم سکڻ گهرجن.

ip -6 addr ...
ip -6 route ...
ip -6 neigh ...

سيٽنگ "/etc/sysctl.conf"

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward = 1

# Do not accept ICMP redirects (prevent MITM attacks)
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0

# Do not send ICMP redirects (we are not a router)
net.ipv4.conf.all.send_redirects = 0

# For receiving ARP replies
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.default.arp_filter = 0

# For sending ARP
net.ipv4.conf.all.arp_announce = 0
net.ipv4.conf.default.arp_announce = 0

# Enable IPv6
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

# IPv6 configuration
net.ipv6.conf.all.autoconf = 1
net.ipv6.conf.all.accept_ra = 0

# For OpenVPN
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.proxy_ndp = 1

# For nginx on boot
net.ipv6.ip_nonlocal_bind = 1

هي آهن منهنجي سرور جون "sysctl" سيٽنگون. مون کي ڪجهه اهم اشارو ڏي.

net.ipv4.ip_forward = 1

ان کان سواء، OpenVPN ڪم نه ڪندو.

net.ipv6.ip_nonlocal_bind = 1

ڪو به شخص جيڪو IPv6 کي پابند ڪرڻ جي ڪوشش ڪري ٿو (مثال طور nginx) فوري طور تي انٽرفيس اپ ٿيڻ کان پوء هڪ غلطي ملي ويندي. اهو پتو موجود ناهي.

اهڙي صورتحال کان بچڻ لاء، اهڙي جوڙجڪ ڪئي وئي آهي.

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

انهن IPv6 سيٽنگن کان سواءِ، OpenVPN ڪلائنٽ کان ٽريفڪ دنيا ۾ ٻاهر نه ايندي آهي.

ٻيون سيٽنگون يا ته لاڳاپيل نه آهن يا مون کي ياد ناهي ته اهي ڪهڙي لاءِ آهن.
پر صرف ان صورت ۾، مان ان کي ڇڏي ڏيان ٿو "جيئن آهي."

هن فائل ۾ تبديلين لاءِ سرور کي ريبوٽ ڪرڻ کان سواءِ، توهان کي حڪم هلائڻو پوندو:

sysctl -p

"ٽيبل" ضابطن بابت وڌيڪ تفصيل: habr.com/post/108690

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

OpenVPN IPv4 iptables کان سواءِ ڪم نٿو ڪري.

منهنجون iptables هن طرح آهن VPN لاءِ:

iptables -A INPUT -p udp -s YY.YY.YY.YY --dport 1194 -j ACCEPT
iptables -A FORWARD -i tun0 -o eno1 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j SNAT --to-source XX.XX.XX.X0
##iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j MASQUERADE
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -j DROP
iptables -A FORWARD -p udp --dport 1194 -j DROP

YY.YY.YY.YY مقامي مشين جو منهنجو جامد IPv4 پتو آهي.
10.8.0.0/24 - IPv4 اوپن وي پي اين نيٽ ورڪ. IPv4 ايڊريس اوپن وي پي اين ڪلائنٽ لاءِ.
ضابطن جي تسلسل اهم آهي.

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

اها هڪ حد آهي انهي ڪري ته صرف آئون پنهنجي جامد IP مان OpenVPN استعمال ڪري سگهان ٿو.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j SNAT --to-source XX.XX.XX.X0
  -- или --
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eno1 -j MASQUERADE

OpenVPN ڪلائنٽ ۽ انٽرنيٽ جي وچ ۾ IPv4 پيڪٽس کي اڳتي وڌائڻ لاء، توهان کي انهن حڪمن مان هڪ کي رجسٽر ڪرڻ جي ضرورت آهي.

مختلف ڪيسن لاء، اختيارن مان هڪ مناسب ناهي.
ٻئي حڪم منهنجي ڪيس لاءِ موزون آهن.
دستاويز پڙهڻ کان پوء، مون پهريون اختيار چونڊيو ڇو ته اهو گهٽ CPU استعمال ڪري ٿو.

سڀني iptables سيٽنگن کي ريبوٽ ڪرڻ کان پوء کڻڻ لاء، توهان کي انهن کي محفوظ ڪرڻ جي ضرورت آهي.

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

اهڙا نالا اتفاق سان نه چونڊيا ويا. اهي استعمال ڪيا ويا آهن "iptables-persistent" پيڪيج.

apt-get install iptables-persistent

مکيه OpenVPN پيڪيج کي نصب ڪرڻ:

apt-get install openvpn easy-rsa

اچو ته سرٽيفڪيٽن لاءِ ٽيمپليٽ قائم ڪريون (پنهنجي قدرن کي متبادل بڻايو):

make-cadir ~/openvpn-ca
cd ~/openvpn-ca
ln -s openssl-1.0.0.cnf openssl.cnf

اچو ته ايڊٽ ڪريون سرٽيفڪيٽ ٽيمپليٽ سيٽنگون:

mcedit vars

...
# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="RU"
export KEY_PROVINCE="Krasnodar"
export KEY_CITY="Dinskaya"
export KEY_ORG="Own"
export KEY_EMAIL="[email protected]"
export KEY_OU="VPN"

# X509 Subject Field
export KEY_NAME="server"
...

سرور سرٽيفڪيٽ ٺاهيو:

cd ~/openvpn-ca
source vars
./clean-all
./build-ca
./build-key-server server
./build-dh
openvpn --genkey --secret keys/ta.key

اچو ته تيار ڪريون فائنل “client-name.opvn” فائلون ٺاهڻ جي صلاحيت:

mkdir -p ~/client-configs/files
chmod 700 ~/client-configs/files
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
mcedit ~/client-configs/base.conf

# Client mode
client

# Interface tunnel type
dev tun

# TCP protocol
proto tcp-client

# Address/Port of VPN server
remote XX.XX.XX.X0 1194

# Don't bind to local port/address
nobind

# Don't need to re-read keys and re-create tun at restart
persist-key
persist-tun

# Remote peer must have a signed certificate
remote-cert-tls server
ns-cert-type server

# Enable compression
comp-lzo

# Custom
ns-cert-type server
tls-auth ta.key 1
cipher DES-EDE3-CBC

اچو ته هڪ اسڪرپٽ تيار ڪريون جيڪو سڀني فائلن کي هڪ واحد opvn فائل ۾ ضم ڪري ڇڏيندو.

mcedit ~/client-configs/make_config.sh
chmod 700 ~/client-configs/make_config.sh

#!/bin/bash

# First argument: Client identifier

KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} 
    <(echo -e '<ca>') 
    ${KEY_DIR}/ca.crt 
    <(echo -e '</ca>n<cert>') 
    ${KEY_DIR}/.crt 
    <(echo -e '</cert>n<key>') 
    ${KEY_DIR}/.key 
    <(echo -e '</key>n<tls-auth>') 
    ${KEY_DIR}/ta.key 
    <(echo -e '</tls-auth>') 
    > ${OUTPUT_DIR}/.ovpn

پهريون OpenVPN ڪلائنٽ ٺاهڻ:

cd ~/openvpn-ca
source vars
./build-key client-name
cd ~/client-configs
./make_config.sh client-name

فائل "~/client-configs/files/client-name.ovpn" ڪلائنٽ جي ڊوائيس ڏانهن موڪليو ويو آهي.

iOS گراهڪن لاءِ توهان کي هيٺين چال ڪرڻ جي ضرورت پوندي:
"tls-auth" ٽئگ جو مواد بغير تبصرن جي ھجڻ گھرجي.
۽ پڻ رکو "ڪي-هدايت 1" فوري طور تي "tls-auth" ٽيگ کان اڳ.

اچو ته OpenVPN سرور جي ترتيب کي ترتيب ڏيو:

cd ~/openvpn-ca/keys
cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | tee /etc/openvpn/server.conf
mcedit /etc/openvpn/server.conf

# Listen port
port 1194

# Protocol
proto tcp-server

# IP tunnel
dev tun0
tun-ipv6
push tun-ipv6

# Master certificate
ca ca.crt

# Server certificate
cert server.crt

# Server private key
key server.key

# Diffie-Hellman parameters
dh dh2048.pem

# Allow clients to communicate with each other
client-to-client

# Client config dir
client-config-dir /etc/openvpn/ccd

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

# Server mode and client subnets
server 10.8.0.0 255.255.255.0
server-ipv6 XXXX:XXXX:XXXX:XXXX:1:3::/80
topology subnet

# IPv6 routes
push "route-ipv6 XXXX:XXXX:XXXX:XXXX::/64"
push "route-ipv6 2000::/3"

# DNS (for Windows)
# These are OpenDNS
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

# Configure all clients to redirect their default network gateway through the VPN
push "redirect-gateway def1 bypass-dhcp"
push "redirect-gateway ipv6" #For iOS

# Don't need to re-read keys and re-create tun at restart
persist-key
persist-tun

# Ping every 10s. Timeout of 120s.
keepalive 10 120

# Enable compression
comp-lzo

# User and group
user vpn
group vpn

# Log a short status
status openvpn-status.log

# Logging verbosity
##verb 4

# Custom config
tls-auth ta.key 0
cipher DES-EDE3-CBC

اهو ضروري آهي ته هر ڪلائنٽ لاء هڪ جامد پتو مقرر ڪرڻ لاء (ضروري ناهي، پر مان ان کي استعمال ڪريان ٿو):

# Client config dir
client-config-dir /etc/openvpn/ccd

سڀ کان ڏکيو ۽ اهم تفصيل.

بدقسمتي سان، OpenVPN اڃا تائين نه ڄاڻيو آهي ته ڪيئن آزاديء سان ترتيب ڏيڻ لاء IPv6 گيٽ وي ڪلائنٽ لاء.
توهان کي هر ڪلائنٽ لاءِ ”دستي طور“ اڳتي وڌڻو پوندو.

# 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

Khabrovsk جي رهاڪن جي مطابق، هن بلاڪ ۾ "غلط معلومات ۽ غلط مقالا" شامل آهن.منهنجي ڪيريئر جي شروعات کان صرف 8 سال پوءِ مون اهو سمجهڻ شروع ڪيو ته SSL ڪيئن ڪم ڪري ٿو.

تنهن ڪري، مان بيان ڪرڻ جي آزادي وٺندس ته SSL ڪيئن استعمال ڪجي (سوالن جي جواب ڏيڻ کان سواء "اهو ڪيئن ڪم ڪري ٿو؟" ۽ "اهو ڇو ڪم ڪري ٿو؟").

جديد انڪرپشن جو بنياد هڪ اهم جوڙي جي پيدائش آهي (ڪردارن جا ٻه تمام وڏا تار).

هڪ ”ڪجهه“ خانگي آهي، ٻي ڪنجي ”عوامي“ آهي. اسان خانگي ڪنجي کي ڏاڍي احتياط سان ڳجھي رکون ٿا. اسان هر ڪنهن کي عوامي ڪنجي ورهايو.

عوامي ڪيئي استعمال ڪندي، توهان متن جي هڪ تار کي انڪرپٽ ڪري سگهو ٿا ته جيئن صرف پرائيويٽ ڪنجي جو مالڪ ان کي ڊيڪرپٽ ڪري سگهي.
خير، اهو ٽيڪنالاجي جو سڄو بنياد آهي.

قدم #1 - https سائيٽون.
جڏهن ڪنهن سائيٽ تائين پهچندي، برائوزر ويب سرور مان سکي ٿو ته سائيٽ https آهي ۽ ان ڪري هڪ عوامي ڪنجي جي درخواست ڪري ٿي.
ويب سرور عوامي ڪنجي ڏئي ٿو. برائوزر http-درخواست کي انڪرپٽ ڪرڻ ۽ ان کي موڪلڻ لاءِ عوامي ڪيئي استعمال ڪري ٿو.
http-درخواست جو مواد صرف اهي پڙهي سگهن ٿا جن وٽ خانگي ڪنجي آهي، يعني رڳو اهو سرور جنهن تي درخواست ڪئي وئي آهي.
Http-درخواست گهٽ ۾ گهٽ هڪ URI تي مشتمل آهي. تنهن ڪري، جيڪڏهن ڪو ملڪ ڪوشش ڪري رهيو آهي رسائي کي محدود ڪرڻ جي پوري سائيٽ تائين نه، پر هڪ مخصوص صفحي تائين، پوءِ اهو ڪرڻ ناممڪن آهي https سائيٽن لاءِ.

قدم # 2 - مرڪوز ٿيل جواب.
ويب سرور ھڪڙو جواب ڏئي ٿو جيڪو آساني سان پڙھي سگھجي ٿو روڊ تي.
حل انتهائي سادو آهي - برائوزر مقامي طور تي هر https سائيٽ لاءِ ساڳيو خانگي-عوامي ڪي جوڙو ٺاهي ٿو.
۽ انهي سان گڏ سائيٽ جي عوامي ڪني جي درخواست سان، اهو موڪلي ٿو ان جي مقامي عوامي چيڪ.
ويب سرور ان کي ياد ڪري ٿو ۽، جڏهن http-response موڪلي ٿو، ان کي هڪ مخصوص ڪلائنٽ جي عوامي ڪني سان گڏ ڪري ٿو.
ھاڻي http-جواب صرف ڪلائنٽ جي برائوزر جي خانگي ڪيئي (يعني ڪلائنٽ پاڻ) جي مالڪ طرفان ڊڪرائي سگھجي ٿو.

قدم نمبر 3 - عوامي چينل ذريعي محفوظ ڪنيڪشن قائم ڪرڻ.
مثال نمبر 2 ۾ هڪ ڪمزوري آهي - خير خواهن کي http-درخواست ۾ مداخلت ڪرڻ ۽ عوامي ڪيئي بابت معلومات کي ايڊٽ ڪرڻ کان ڪجھ به نه روڪيو.
اهڙيء طرح، وچولي واضح طور تي سڀني موڪليل ۽ وصول ڪيل پيغامن جي مواد کي ڏسندو جيستائين مواصلاتي چينل تبديل نه ٿيندي.
ان سان ڊيل ڪرڻ انتهائي سادو آهي - صرف برائوزر جي پبلڪ ڪيئي کي موڪليو جيئن ويب سرور جي پبلڪ ڪيئي سان انڪرپٽ ٿيل پيغام.
ويب سرور پوءِ پهريون جواب موڪلي ٿو "توهان جي عوامي ڪيئي هن طرح آهي" ۽ انهي پيغام کي ساڳئي عوامي ڪيئي سان انڪرپٽ ڪري ٿو.
برائوزر جواب تي نظر اچي ٿو - جيڪڏهن پيغام "توهان جي عوامي ڪيئي هن طرح آهي" موصول ٿئي ٿي - پوء اها 100٪ ضمانت آهي ته هي مواصلاتي چينل محفوظ آهي.
اهو ڪيترو محفوظ آهي؟
اهڙي محفوظ ڪميونيڪيشن چينل جي تخليق پنگ * 2 جي رفتار سان ٿيندي آهي. مثال طور 20ms.
حملي آور وٽ اڳ ۾ ئي پارٽين مان هڪ جي خانگي ڪنجي هجڻ ضروري آهي. يا مليس سيڪنڊن ۾ هڪ خانگي چيڪ ڳولھيو.
هڪ جديد پرائيويٽ ڪنجي کي هيڪ ڪرڻ ۾ ڏهاڪا لڳندا هڪ سپر ڪمپيوٽر تي.

قدم #4 - عوامي چابين جو عوامي ڊيٽابيس.
ظاهر آهي، هن سڄي ڪهاڻي ۾ هڪ حملو ڪندڙ لاء هڪ موقعو آهي ته ڪلائنٽ ۽ سرور جي وچ ۾ رابطي واري چينل تي ويهڻ لاء.
ڪلائنٽ سرور کي ظاهر ڪري سگهي ٿو، ۽ سرور ڪلائنٽ هجڻ جو مظاهرو ڪري سگهي ٿو. ۽ ٻنهي طرفن ۾ چاٻين جو هڪ جوڙو نقل ڪريو.
پوءِ حملو ڪندڙ سڀ ٽريفڪ ڏسندو ۽ ٽريفڪ کي ”ايڊٽ“ ڪرڻ جي قابل هوندو.
مثال طور، پتي کي تبديل ڪريو جتي پئسا موڪلڻ يا آنلائن بئنڪنگ مان پاسورڊ ڪاپي ڪريو يا "قابل اعتراض" مواد بلاڪ ڪريو.
اهڙين حملي ڪندڙن کي منهن ڏيڻ لاء، اهي هر هڪ https سائيٽ لاء عوامي چابمن سان گڏ هڪ عوامي ڊيٽابيس سان گڏ آيا.
هر برائوزر "ڄاڻ" جي باري ۾ 200 اهڙي ڊيٽابيس جي وجود جي باري ۾. اهو هر برائوزر ۾ اڳ ۾ نصب ٿيل آهي.
"علم" جي پٺڀرائي ڪئي وئي آهي عوامي ڪنجي طرفان هر سرٽيفڪيٽ مان. اهو آهي، هر مخصوص سرٽيفڪيشن اٿارٽي سان ڪنيڪشن جعلي نه ٿي سگهي.

هاڻي هتي هڪ سادي سمجھ آهي ته ڪيئن استعمال ڪجي SSL لاءِ https.
جيڪڏهن توهان پنهنجي دماغ کي استعمال ڪندا آهيو، اهو واضح ٿي ويندو ته خاص خدمتون هن جوڙجڪ ۾ ڪجهه هيڪ ڪيئن ڪري سگهن ٿيون. پر اھو انھن کي بھترين ڪوششن جي قيمت ڏيندو.
۽ NSA يا CIA کان ننڍا تنظيمون - موجوده سطح جي تحفظ کي هيڪ ڪرڻ لڳ ڀڳ ناممڪن آهي، جيتوڻيڪ VIPs لاءِ.

مان ssh ڪنيڪشن بابت پڻ شامل ڪندس. اتي ڪي به عوامي چابيون نه آھن، پوء توھان ڇا ڪري سگھو ٿا؟ مسئلو ٻن طريقن سان حل ڪيو ويو آهي.
آپشن ssh-by-password:
پهرين ڪنيڪشن دوران، ssh ڪلائنٽ کي ڊيڄارڻ گهرجي ته اسان وٽ ssh سرور مان هڪ نئين عوامي چيڪ آهي.
۽ وڌيڪ ڪنيڪشن جي دوران، جيڪڏهن ڊيڄاريندڙ "ssh سرور کان نئين عوامي ڪيئي" ظاهر ٿئي ٿي، ان جو مطلب اهو ٿيندو ته اهي توهان کي ٻڌڻ جي ڪوشش ڪري رهيا آهن.
يا توهان کي توهان جي پهرين ڪنيڪشن تي نظر انداز ڪيو ويو، پر هاڻي توهان وچولين کان سواء سرور سان رابطو ڪيو.
دراصل، حقيقت اها آهي ته وائر ٽيپنگ جي حقيقت کي آساني سان، جلدي ۽ ڪوشش سان ظاهر ڪيو ويو آهي، اهو حملو صرف خاص ڪيسن ۾ هڪ مخصوص ڪلائنٽ لاء استعمال ڪيو ويندو آهي.

اختيار ssh-by-key:
اسان هڪ فليش ڊرائيو وٺون ٿا، ان تي ssh سرور لاءِ پرائيويٽ ڪيچ لکو (انهيءَ لاءِ شرطون ۽ ڪيتريون ئي اهم نواڻون آهن، پر مان هڪ تعليمي پروگرام لکي رهيو آهيان، استعمال لاءِ هدايتون نه).
اسان عوامي ڪني کي مشين تي ڇڏي ڏيون ٿا جتي ssh ڪلائنٽ هوندو ۽ اسان ان کي راز ۾ رکون ٿا.
اسان فليش ڊرائيو کي سرور تي آڻيون، ان کي داخل ڪريو، پرائيويٽ ڪنجي کي نقل ڪريو، ۽ فليش ڊرائيو کي ساڙيو ۽ راھ کي واءَ تي پکيڙيو (يا گھٽ ۾ گھٽ ان کي صفر سان فارميٽ ڪريو).
اهو سڀ ڪجهه آهي - اهڙي آپريشن کان پوء، اهڙي ايس ايس ايس ڪنيڪشن کي هيڪ ڪرڻ ناممڪن آهي. يقينن، 10 سالن ۾ اهو ممڪن ٿيندو ته هڪ سپر ڪمپيوٽر تي ٽرئفڪ کي ڏسڻ لاء - پر اهو هڪ مختلف ڪهاڻي آهي.

مان آف ٽاپڪ لاءِ معافي وٺان ٿو.

تنهنڪري هاڻي اهو نظريو معلوم ٿيو آهي. مان توهان کي SSL سرٽيفڪيٽ ٺاهڻ جي وهڪري بابت ٻڌائيندس.

"openssl genrsa" استعمال ڪندي اسان عوامي ڪي لاءِ پرائيويٽ ڪي ۽ "خالي" ٺاهيندا آهيون.
اسان "خالي" موڪليندا آهيون ٽئين پارٽي جي ڪمپني ڏانهن، جنهن کي اسان ادا ڪريون ٿا تقريبن $9 سادي سرٽيفڪيٽ لاءِ.

ڪجھ ڪلاڪن کان پوءِ، اسان کي ملي ٿي اسان جي ”عوامي“ ڪي ۽ ڪيترن ئي عوامي ڪنجين جو هڪ سيٽ هن ٽئين پارٽي جي ڪمپني کان.

هڪ ٽئين پارٽي ڪمپني کي منهنجي پبلڪ ڪيچ جي رجسٽريشن لاءِ ڇو ادا ڪرڻ گهرجي اهو هڪ الڳ سوال آهي، اسان هتي ان تي غور نه ڪنداسين.

هاڻي اهو واضح ٿيو ته لکت جو مطلب ڇا آهي:

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

"/etc/ssl" فولڊر سڀني فائلن تي مشتمل آهي ايس ايس ايل مسئلن لاء.
domain1.com - ڊومين جو نالو.
2018 اهم تخليق جو سال آهي.
"key" - نامزدگي ته فائل هڪ خانگي چاٻي آهي.

۽ هن فائل جو مطلب:

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

هتي اسان اهو بيان ڪريون ٿا ته سڀ ايندڙ ميل dovecot ڏانهن ويندا آهن.
۽ ڊومين جا ضابطا، ميل باڪس، عرف - ڊيٽابيس ۾ ڏسو.

/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

ھاڻي پوسٽ فڪس ڄاڻي ٿو ته وڌيڪ موڪلڻ لاء ميل قبول ڪري سگھجي ٿو صرف dovecot سان اختيار ڪرڻ کان پوء.

مون کي حقيقت ۾ سمجهه ۾ نه ٿو اچي ته اهو هتي نقل ڪيو ويو آهي. اسان اڳ ۾ ئي بيان ڪيو آهي هر شيء جيڪا گهربل آهي "virtual_transport" ۾.

پر پوسٽ فڪس سسٽم تمام پراڻو آهي - شايد اهو پراڻي ڏينهن کان واپسي آهي.

smtpd_recipient_restrictions =
        ...

smtpd_helo_restrictions =
        ...

smtpd_client_restrictions =
        ...

اهو هر ميل سرور لاءِ مختلف ترتيب ڏئي سگهجي ٿو.

منهنجي اختيار ۾ 3 ميل سرور آهن ۽ اهي سيٽنگون مختلف استعمال جي گهرجن جي ڪري تمام مختلف آهن.

توهان کي ان کي احتياط سان ترتيب ڏيڻ جي ضرورت آهي - ٻي صورت ۾ اسپام توهان ۾ داخل ٿي ويندو، يا ان کان به بدتر - اسپام توهان مان نڪرندو.

# SPF
policyd-spf_time_limit = 3600

ايندڙ اکر جي SPF چيڪ ڪرڻ سان لاڳاپيل ڪجهه پلگ ان لاء سيٽنگ.

# OpenDKIM
milter_default_action = accept
milter_protocol = 6
smtpd_milters = unix:var/run/opendkim/opendkim.sock
non_smtpd_milters = unix:var/run/opendkim/opendkim.sock

سيٽنگ اها آهي ته اسان کي لازمي طور تي هڪ DKIM دستخط مهيا ڪرڻ گهرجي سڀني ٻاهرين اي ميلن سان.

# IP address per domain
sender_dependent_default_transport_maps = pcre:/etc/postfix/sdd_transport.pcre

هي خط روٽنگ ۾ اهم تفصيل آهي جڏهن PHP اسڪرپٽ مان خط موڪلڻ.

فائل "/etc/postfix/sdd_transport.pcre":

/^[email protected]$/ domain1:
/^[email protected]$/ domain2:
/^[email protected]$/ domain3:
/@domain1.com$/             domain1:
/@domain2.com$/             domain2:
/@domain3.com$/             domain3:

کاٻي پاسي باقاعده اظهار آهن. ساڄي پاسي هڪ ليبل آهي جيڪو خط کي نشانو بڻائيندو آهي.
پوسٽ فڪس ليبل جي مطابق - هڪ مخصوص خط لاءِ ڪجهه وڌيڪ تشڪيل لائينون حساب ۾ وٺندي.

هڪ مخصوص خط لاءِ پوسٽ فڪس کي ڪيئن ٻيهر ترتيب ڏنو ويندو "master.cf" ۾ اشارو ڪيو ويندو.

لائينون 4، 5، 6 مکيه آھن. جنهن ڊومين جي طرفان اسان خط موڪلي رهيا آهيون، اسان هي ليبل لڳايو.
پر "مان" فيلڊ هميشه پراڻي ڪوڊ ۾ PHP اسڪرپٽ ۾ اشارو نه ڪيو ويو آهي. ان کان پوء صارف جو نالو بچاء لاء اچي ٿو.

آرٽيڪل اڳ ۾ ئي وسيع آهي - مان nginx + fpm ترتيب ڏيڻ کان پريشان ٿيڻ نه چاهيندس.

مختصر طور تي، هر سائيٽ لاءِ اسان ان جو پنهنجو لينڪس-يوزر مالڪ مقرر ڪيو آهي. ۽ انهي جي مطابق توهان جو fpm پول.

Fpm-pool php جو ڪو به نسخو استعمال ڪري ٿو (اهو تمام سٺو آهي جڏهن هڪ ئي سرور تي توهان php جا مختلف ورجن استعمال ڪري سگهو ٿا ۽ پاڙيسري سائيٽن لاءِ به مختلف php.ini مسئلن کان سواءِ).

تنهن ڪري، هڪ مخصوص لينڪس-يوزر "www-domain2" وٽ ويب سائيٽ domain2.com آهي. ھن سائيٽ وٽ ھڪڙو ڪوڊ آھي اي ميل موڪلڻ لاءِ بغير فيلڊ جي وضاحت ڪرڻ جي.

تنهن ڪري، انهي صورت ۾، خط صحيح طور تي موڪليا ويندا ۽ ڪڏهن به اسپام ۾ ختم نه ٿيندا.

منهنجو "/etc/postfix/master.cf" هن طرح نظر اچي ٿو:

...
smtp      inet  n       -       y       -       -       smtpd
  -o content_filter=spamassassin
...
submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
...
policyd-spf  unix  -       n       n       -       0       spawn
    user=policyd-spf argv=/usr/bin/policyd-spf

spamassassin unix -     n       n       -       -       pipe
    user=spamd argv=/usr/bin/spamc -f -e
    /usr/sbin/sendmail -oi -f ${sender} ${recipient}
...
domain1  unix -       -       n       -       -       smtp
   -o smtp_bind_address=XX.XX.XX.X1
   -o smtp_helo_name=domain1.com
   -o inet_protocols=all
   -o smtp_bind_address6=XXXX:XXXX:XXXX:XXXX:1:1:1:1
   -o syslog_name=postfix-domain1

domain2  unix -       -       n       -       -       smtp
   -o smtp_bind_address=XX.XX.XX.X5
   -o smtp_helo_name=domain2.com
   -o inet_protocols=all
   -o smtp_bind_address6=XXXX:XXXX:XXXX:XXXX:1:2:1:1
   -o syslog_name=postfix-domain2

domain3  unix -       -       n       -       -       smtp
   -o smtp_bind_address=XX.XX.XX.X2
   -o smtp_helo_name=domain3
   -o inet_protocols=all
   -o smtp_bind_address6=XXXX:XXXX:XXXX:XXXX:1:1:5:1
   -o syslog_name=postfix-domain3

فائل مڪمل طور تي مهيا نه ڪئي وئي آهي - اهو اڳ ۾ ئي تمام وڏو آهي.
مون صرف نوٽ ڪيو ته ڇا تبديل ڪيو ويو.

smtp      inet  n       -       y       -       -       smtpd
  -o content_filter=spamassassin
...
spamassassin unix -     n       n       -       -       pipe
    user=spamd argv=/usr/bin/spamc -f -e
    /usr/sbin/sendmail -oi -f ${sender} ${recipient}

اهي اسپاماساسن سان لاڳاپيل سيٽنگون آهن، انهي تي وڌيڪ بعد ۾.

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

اسان توهان کي پورٽ 587 ذريعي ميل سرور سان ڳنڍڻ جي اجازت ڏيون ٿا.
هن کي ڪرڻ لاء، توهان کي لاگ ان ٿيڻ گهرجي.

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

SPF چيڪ کي فعال ڪريو.

apt-get install postfix-policyd-spf-python

اچو ته مٿي ڏنل SPF چيڪن لاءِ پيڪيج انسٽال ڪريون.

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

۽ هي سڀ کان دلچسپ شيء آهي. هي هڪ مخصوص ڊومين لاءِ خط موڪلڻ جي صلاحيت آهي مخصوص IPv4/IPv6 پتي مان.

اهو rDNS جي خاطر ڪيو ويو آهي. rDNS IP پتي ذريعي اسٽرنگ حاصل ڪرڻ جو عمل آهي.
۽ ميل لاءِ، هي فيچر استعمال ڪيو ويندو آهي تصديق ڪرڻ لاءِ ته هيلو بلڪل ان پتي جي rDNS سان ملي ٿو جتان اي ميل موڪلي وئي هئي.

جيڪڏهن هيلو اي ميل ڊومين سان نه ٿو ملي جنهن جي طرفان خط موڪليو ويو، اسپام پوائنٽس ڏنيون وينديون آهن.

هيلو rDNS سان نه ٿو ملي - ڪيترائي اسپام پوائنٽس ڏنا ويا آهن.
ان جي مطابق، هر ڊومين کي پنهنجي IP پتي هجڻ گهرجي.
OVH لاء - ڪنسول ۾ اهو ممڪن آهي rDNS بيان ڪرڻ.
tech.ru لاء - مسئلو حمايت ذريعي حل ڪيو ويو آهي.
AWS لاء، مسئلو حمايت ذريعي حل ڪيو ويو آهي.
"inet_protocols" ۽ "smtp_bind_address6" - اسان IPv6 سپورٽ کي چالو ڪندا آهيون.
IPv6 لاءِ توهان کي پڻ رجسٽر ڪرڻ جي ضرورت آهي rDNS.
"syslog_name" - ۽ هي لاگ پڙهڻ جي آسانيءَ لاءِ آهي.

سرٽيفڪيٽ خريد ڪريو مان هتي سفارش ڪريان ٿو.

پوسٽ فڪس + ڊوڪوٽ لنڪ هتي ترتيب ڏيڻ.

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 سرٽيفڪيٽ استعمال ڪرڻ لاءِ جڏھن ڪھڙي مقامي 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
}

اهو مستقبل ۾ اسپاماساسن جي ضرورت پوندي.

فائل "/etc/dovecot/conf.d/20-imap.conf"

protocol imap {
  mail_plugins = $mail_plugins antispam
}

هي هڪ 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 سرٽيفڪيٽ سان وقف سرور وٺڻ جي طاقت هوندي ۽ ان کي اڃا به وڌيڪ تفصيل سان بيان ڪيو وڃي ۽، گهڻو ڪري. اهم طور تي، سڀني غائب اهم تفصيلن جي سڃاڻپ ڪريو.

مان پڻ پوسٽل سرٽيفڪيٽ بابت خيالن تي موٽ حاصل ڪرڻ چاهيندس. جيڪڏهن توهان اهو خيال پسند ڪيو، مان ڪوشش ڪندس ته طاقت ڳولڻ جي لاءِ آر ايف سي لاءِ مسودو لکان.

جڏهن هڪ مضمون جي وڏي حصن کي نقل ڪريو، هن مضمون جي لنڪ مهيا ڪريو.
جڏهن ڪنهن ٻئي ٻولي ۾ ترجمو ڪيو وڃي ته هن مضمون جي لنڪ مهيا ڪريو.
مان ڪوشش ڪندس ته ان جو انگريزيءَ ۾ ترجمو پاڻ ڪريان ۽ ڪراس ريفرنس ڇڏي ڏيندس.


جو ذريعو: www.habr.com

تبصرو شامل ڪريو