نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
يمكن أن يكون تشغيل خادم البريد الإلكتروني الخاص بك مجزياً للغاية. أنت المسؤول عن بياناتك. كما يتيح لك المزيد من المرونة مع خيارات التوصيل الخاصة بك. ومع ذلك ، هناك عدد قليل من التحديات. أنت تخاطر بفتح الخادم الخاص بك حتى نقاط الضعف ، وكذلك جعل الخادم الخاص بك تتابعًا محتملاً لاستخدام مرسلي البريد العشوائي.
مع هذا ، لنبدأ في تشغيل خادم البريد الخاص بنا.
هناك ثلاث قطع مطلوبة من البرامج لتثبيتها غير مضمنة في نظام FreeBSD الأساسي:
OpenSMTPd هو وكيل نقل البريد (MTA) ووكيل تسليم البريد (MDA). وهذا يعني أنه يمكنه الاتصال بخوادم البريد الأخرى عبر SMTP
البروتوكول ، كما أنه يعالج تسليم البريد إلى صناديق بريد المستخدمين الفرديين. سنقوم بإعداد OpenSMTPd بحيث يمكنه الاتصال بالخوادم الخارجية (التي تمت تصفيتها من خلال البريد العشوائي) وتسليم البريد إلى المستخدمين المحليين ، بالإضافة إلى تسليم البريد المحلي من مستخدم إلى آخر.
Dovecot هو MDA الذي يقرأ صناديق البريد المحلية ويقدمها عبر IMAP أو POP3 للمستخدمين. سيستخدم صناديق بريد المستخدمين المحليين لخدمة هذا المحتوى.
Spamd هي خدمة لتصفية البريد. يمكننا إعادة توجيه البريد من خلال البريد العشوائي ، وسيقوم بتصفية البريد بناءً على مجموعة متنوعة من القوائم السوداء والقوائم البيضاء والقائمة الرمادية.
تتطلب الفكرة العامة لخادم البريد هذا بعض المسارات المختلفة:
Outside world -> Firewall -> spamd -> OpenSMTPD -> User mail boxes
Outside world -> Firewall (spamd-whitelist) -> OpenSMTPD -> User mailboxes
Outside world -> Firewall (IMAP/POP3) -> Dovecot
Outside world -> Firewall (SMTPD submission)
في هذا البرنامج التعليمي ، سنستخدم إصدار FreeBSD من OpenFD's PF لجدار الحماية الخاص بنا. يمكنك أيضًا الاستخدام ipfw
، حيث يكون التكوين متشابهًا جدًا.
ملاحظة: يحظر Vultr بشكل افتراضي المنفذ 25 ، الذي تستخدمه خوادم SMTP في كل مكان. إذا كنت ترغب في تشغيل خادم بريد إلكتروني يعمل بكامل طاقته ، فسيتعين عليك فتح هذا المنفذ.
أولاً ، نحتاج إلى تثبيت البرامج المطلوبة.
على افتراض أنك تعمل كمستخدم تم إعداد وصول sudo ، يمكننا تشغيل الأوامر التالية. ستختلف باختلاف ما إذا كنت تستخدم منافذ أو حزم.
ما لم تكن بحاجة إلى وظائف محددة مدمجة في هذه الأدوات المساعدة ، فمن المستحسن التثبيت عبر الحزم. إنه أسهل ، ويستغرق وقتًا وموارد أقل للخادم ، ويوفر واجهة بديهية وسهلة الاستخدام.
sudo pkg install opensmtpd dovecot spamd
make
ستعطيك الأوامر التالية الكثير من خيارات الترجمة ، وستعمل الإعدادات الافتراضية بشكل جيد. لا تقم بتغيير هذه إلا إذا كنت تعرف بالضبط ما تفعله.
sudo portsnap fetch update # or run portsnap fetch extract if using ports for the first time
cd /usr/ports/mail/opensmtpd
make install # Installs openSMTPd
make clean
cd /usr/ports/mail/dovecot
make install # Installs dovecot
make clean
cd /usr/ports/mail/spamd
make install # Installs spamd
make clean
سنحتاج إلى إضافة الأسطر التالية إلى /etc/rc.conf
:
pf_enable="YES"
pf_rules="/usr/local/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
obspamd_enable="YES"
obspamd_flags="-v"
obspamlogd_enable="YES"
dovecot_enable="YES"
لتكوين PF ، يمكننا إنشاء /usr/local/etc/pf.conf
:
## Set public interface ##
ext_if="vtnet0"
## set and drop IP ranges on the public interface ##
martians = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, \
10.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, \
0.0.0.0/8, 240.0.0.0/4 }"
table <spamd> persist
table <spamd-white> persist
# Whitelisted webmail services
table <webmail> persist file "/usr/local/etc/pf.webmail.ip.conf"
## Skip loop back interface - Skip all PF processing on interface ##
set skip on lo
## Sets the interface for which PF should gather statistics such as bytes in/out and packets passed/blocked ##
set loginterface $ext_if
# Deal with attacks based on incorrect handling of packet fragments
scrub in all
# Pass spamd whitelist
pass quick log on $ext_if inet proto tcp from <spamd-white> to $ext_if port smtp \
-> 127.0.0.1 port 25
# Pass webmail servers
rdr pass quick log on $ext_if inet proto tcp from <gmail> to $ext_if port smtp \
-> 127.0.0.1 port 25
# pass submission messages.
pass quick log on $ext_if inet proto tcp from any to $ext_if port submission modulate state
# Pass unknown mail to spamd
rdr pass log on $ext_if inet proto tcp from {!<spamd-white> <spamd>} to $ext_if port smtp \
-> 127.0.0.1 port 8025
## Blocking spoofed packets
antispoof quick for $ext_if
## Set default policy ##
block return in log all
block out all
# Drop all Non-Routable Addresses
block drop in quick on $ext_if from $martians to any
block drop out quick on $ext_if from any to $martians
pass in inet proto tcp to $ext_if port ssh
# Allow Ping-Pong stuff. Be a good sysadmin
pass inet proto icmp icmp-type echoreq
# Open up imap/pop3 support
pass quick on $ext_if proto tcp from any to any port {imap, imaps, pop3, pop3s} modulate state
# Allow outgoing traffic
pass out on $ext_if proto tcp from any to any modulate state
pass out on $ext_if proto udp from any to any keep state
هذا تكوين PF عامل. إنه بسيط نسبيًا ، ولكن هناك بعض المراوغات التي يمكن شرحها أيضًا.
أولاً ، نحدد $ext_if
المتغير الخاص vtnet0
بجهازنا لاستخدامه لاحقًا. نحدد أيضًا عناوين IP غير الصالحة التي يجب إسقاطها على الواجهة الخارجية.
نحدد أيضًا جدولين ، spamd
و spamd-white
- يتم إنشاء هذين الجدولين بواسطة spamd في تكوينه الافتراضي. أيضًا ، نحدد جدولًا باسمه webmail
والذي سنستخدمه للسماح لبعض موفري بريد الويب الرئيسيين بالمرور.
لعرض جدول ، يمكنك استخدام الأمر pfctl -t tablename -T show
لسرد العناصر في الجدول.
قمنا بتعيين بعض قواعد PF: تخطي المعالجة على الواجهة المحلية ، وتمكين الإحصائيات على الواجهة الخارجية وفرك الحزم الواردة.
التالي هو أحد الأجزاء الأكثر أهمية ، حيث ندير إرسال حركة المرور عبر البريد العشوائي أو OpenSMTPd.
أولاً ، قاعدة إعادة التوجيه (لاحظ بناء الجملة هنا ، يستخدم FreeBSD 11 صيغة PF للأسلوب الأقدم (ما قبل OpenBSD 4.6) لذا قد يبدو بناء الجملة غريبًا. إذا تلقينا أي شيء على smtp من مضيف مدرج في spamd
الجدول أو غير مدرج في على spamd-white
الطاولة، ونحن إعادة توجيه الاتصال من خلال البرنامج الخفي spamd، التي تتعامل مع هذه الاتصالات. القواعد الثلاث المقبلة هي قواعد عبور حتى نتمكن من الحصول على الواقع البريد. نحن نمر من خلال الرسائل من البرامج المتكاملة المدرجة في spamd-white
و webmail
الجداول مباشرة من خلال ل OpenSMTPd أيضًا ، نقبل الرسائل على منفذ الإرسال ( 587
).
ثم هناك بعض قواعد التدبير المنزلي لتعيين سياستنا الافتراضية وقبول رسائل SSH و ICMP.
ثم نقوم بتمرير IMAP و POP3 على الواجهة الخارجية من أجل الوصول إلى Dovecot.
أخيرًا ، نسمح بكل حركة المرور الصادرة. إذا كنت ترغب في إضافة المزيد من الأمان ، يمكنك تحديد المنافذ التي تمر بها ، ولكن بالنسبة لخادم يستخدم مرة واحدة ، فلن تكون هناك مشكلة في تمرير كل شيء.
بدء PF:
sudo service pf start
الآن بعد أن أصبح لدينا إعداد جدار الحماية ، يمكننا الانتقال إلى تكوين خادم البريد.
يحتوي OpenSMTPd على بنية تكوين بسيطة للغاية وسهلة القراءة. يمكن أن يتناسب تكوين العمل بالكامل مع 14 سطرًا ، كما ترى أدناه:
#This is the smtpd server system-wide configuration file.
# See smtpd.conf(5) for more information.
ext_if=vtnet0
# If you edit the file, you have to run "smtpctl update table aliases"
table aliases file:/etc/mail/aliases
table domains file:/etc/mail/domains
# Keys
pki mail.example.com key "/usr/local/etc/letsencrypt/live/mail.example.com/privkey.pem"
pki mail.example.com certificate "/usr/local/etc/letsencrypt/live/mail.example.com/fullchain.pem"
# If you want to listen on multiple subdomains (e.g. mail.davidlenfesty) you have to add more lines
# of keys, and more lines of listeners
# Listen for local SMTP connections
listen on localhost hostname mail.example.com
# listen for filtered spamd connections
listen on lo0 port 10026
# Listen for submissions
listen on $ext_if port 587 tls-require auth pki mail.example.com tag SUBMITTED
# Accept mail from external sources.
accept from any for domain <domains> alias <aliases> deliver to maildir "~/mail"
accept for local alias <aliases> deliver to maildir "~/mail"
accept from local for any relay tls
accept tagged SUBMITTED for any relay tls
أولاً ، نحدد مرة أخرى واجهتنا الخارجية ، بالإضافة إلى بعض الجداول والأسماء المستعارة والنطاقات. ثم ننتقل إلى مفتاح SSL وشهادة لأي نطاقات نريد التعامل مع البريد تحتها.
في القسم التالي ، نحدد الواجهات والمنافذ التي نريد الاستماع إليها. أولاً ، نستمع على مضيف محلي لنطاقنا mail.example.com
، لأي اتصالات محلية. ثم نستمع إلى رسائلنا التي تمت تصفيتها بواسطة الرسائل غير المرغوب فيها والرسائل المرسلة على الواجهة الخارجية. أخيرًا ، نستمع إلى عمليات الإرسال ، والتي تتم على المنفذ 587
ونطلب منهم المصادقة ، لأسباب أمنية.
وأخيرا هي accept
إعداداتنا. نحن نقبل أي رسالة لأي من نطاقاتنا المحددة في جدولنا domains
للأسماء المستعارة في جدولنا aliases
، لتسليمها إلى الدليل الرئيسي الخاص بهم maildir
بالتنسيق. ثم نقبل جميع الاتصالات المحلية لصناديق البريد المحلية وترحيل رسائلنا ، حتى نتمكن من إرسال البريد الإلكتروني. أخيرًا ، نقبل رسائلنا المرسلة للتتابع. إذا لم نطلب مصادقة منفذ الإرسال الخاص بنا ، فسيكون هذا خطرًا أمنيًا كبيرًا. سيتيح هذا لأي شخص استخدام خادمنا كترحيل للرسائل غير المرغوب فيها.
يأتي FreeBSD مع ملف اسم مستعار افتراضي /etc/mail/aliases
بالتنسيق التالي:
vuser1: user1
vuser2: user1
vuser3: user1
vuser4: user2
يحدد هذا صناديق البريد المختلفة ، وأين نريد إعادة توجيه الرسائل المرسلة إلى صناديق البريد المحددة هذه. يمكننا إما تحديد مستخدمينا كمستخدمين للنظام المحلي أو صناديق بريد خارجية لإعادة التوجيه إليها. ملف FreeBSD الافتراضي وصفي تمامًا لذا يمكنك الرجوع إليه كمرجع.
لا يوفر FreeBSD ملف المجالات الافتراضي ، ولكن هذا بسيط للغاية:
# Domains
example.com
mail.example.com
smtp.example.com
هذا مجرد ملف نصي عادي مع كل مجال تريد الاستماع إليه في سطر جديد. يمكنك كتابة تعليق باستخدام #
الرمز. هذا الملف موجود ببساطة بحيث يمكنك استخدام عدد أقل من خطوط التكوين.
هناك طريقتان لتأمين اتصالاتك مع خادم البريد الخاص بك ، شهادات موقعة ذاتيًا وموقعة. من الممكن بالتأكيد التوقيع على شهاداتك ذاتيًا ، ولكن خدمات مثل Let's Encrypt توفر توقيع مجاني وسهل الاستخدام بشكل لا يصدق.
أولاً يجب علينا تثبيت برنامج certbot.
sudo pkg install py-certbot
بدلاً من ذلك ، يمكن تثبيته بالمنافذ:
cd /usr/ports/security/py-certbot
make install
make clean
بعد ذلك ، للحصول على شهادتك ، تحتاج إلى التأكد من فتح المنفذ 80
على الواجهة الخارجية. أضف الأسطر التالية في مكان ما في قواعد التصفية في /usr/local/etc/pf.conf
:
pass quick on $ext_if from any to any port http
ثم قم بتشغيل pfctl -f /usr/local/etc/pf.conf
لإعادة تحميل مجموعة القواعد.
ثم يمكنك تشغيل الأمر لأي مجالات تريد الحصول على شهادة لها:
certbot certonly --standalone -d mail.example.com
يوصى بإعداد إدخال crontab للتشغيل certbot renew
مرة واحدة كل 6 أشهر لضمان عدم انتهاء صلاحية شهاداتك.
ثم لكل مجال ذي صلة ، يمكنك تعديل الخطوط للإشارة إلى ملف المفتاح الصحيح:
pki mail.example.com key "/usr/local/etc/letsencrypt/live/mail.example.com/privkey.pem"
pki mail.example.com certificate "/usr/local/etc/letsencrypt/live/mail.example.com/fullchain.pem"
تحرير الأوراق المالية:
sudo chmod 700 /usr/local/etc/letsencrypt/archive/mail.example.com/*
ملاحظة: سيكون عليك القيام بذلك لكل ملف مفتاح أصلي وإلا لن يفتح OpenSMTPd.
الآن يمكننا بدء الخدمة:
sudo service smtpd start
هنا نستخدم برنامج Spamd spamd الخاص بـ OpenBSD لتقليل كمية البريد العشوائي التي نحصل عليها من الإنترنت. بشكل أساسي ، يعمل هذا على تصفية الرسائل الواردة من عناوين IP المعروفة بأنها سيئة من مصادر البريد العشوائي المختلفة ، وكذلك (الوارد افتراضيًا) الاتصالات الواردة "القائمة الرمادية". يحاول Spamd أيضًا إضاعة وقت صاحب الأسلوب غير المرغوب فيه عن طريق "التلعثم" في القائمة السوداء والروابط المتدرجة ، مما يعني أنه ينشر رده على مدى عدة ثوان مما يجبر العميل على البقاء مفتوحًا لفترة أطول من المعتاد.
يتم وضع اتصال رمادي في القائمة عند اتصال أي عنوان IP جديد غير موجود في أي قائمة سوداء أو قائمة بيضاء. بمجرد اتصال العنوان الجديد ، يسقط البريد العشوائي الرسالة برسالة خطأ غير مؤذية ، ثم يضيفها إلى قائمة مؤقتة. نظرًا لأن أصحاب الرسائل غير المرغوب فيها يتلقون أموالًا مقابل الرسائل التي تم تسليمها ، فلن يعيدوا المحاولة بسبب خطأ ، في حين أن الخدمة الشرعية ستعيد المحاولة قريبًا نسبيًا.
سيكون عليك تشغيل ما يلي للتثبيت fdescfs
:
mount -t fdescfs null /dev/fd
ثم عليك إضافة هذا السطر إلى /etc/fstab
:
fdescfs /dev/fd fdescfs rw 0 0
/usr/local/etc/spamd/spamd.conf.sample
سيعمل ملف التكوين الافتراضي (الموجود في ) بشكل جيد. يمكنك تعديله لإضافة مصادر جديدة أو تغيير المصادر التي تستخدمها:
sudo cp /usr/local/etc/spamd/spamd.conf.sample /usr/local/etc/spamd/spamd.conf
يمكننا بدء الخدمة بما يلي:
sudo service obspamd start
عند هذه النقطة يتم إعداد البريد العشوائي.
تتمثل إحدى مشكلات نهج القائمة الرمادية في أن خدمات البريد الكبيرة غالبًا ما ترسل البريد من خلال واحدة من العديد من البكرات المختلفة ، ولا يمكنك ضمان قيام نفس الخادم بإرسال الرسالة في كل مرة. أحد الحلول لذلك هو إضافة نطاقات IP التي تستخدمها خدمات بريد الويب المختلفة إلى القائمة البيضاء. هذا ما يستخدمه جدول بريد الويب في تكوين PF. يمكن أن تأتي هذه الاستراتيجية بنتائج عكسية إذا قمت بتضمين عنوان IP يستخدمه مرسل البريد المزعج ، ولكن طالما أنك حريص على النطاقات التي تضعها في الجدول ، فستكون على ما يرام.
لإضافة نطاق بريد إلكتروني إلى جدول بريد الويب ، يمكنك تشغيل الأمر التالي:
pfctl -t webmail -T add 192.0.2.0/24
إذا كنت تريد أن يصل المستخدمون إلى بريدهم دون تسجيل الدخول عبر SSH ، فستحتاج إلى MDA يدعم IMAP و / أو POP3. البرنامج المشهور للغاية هو Dovecot ، مع تكوين بسيط إلى حد ما وميزات قوية.
يمكننا نسخ التكوين الافتراضي:
cd /usr/local/etc/dovecot
cp -R example-config/* ./
يتكون التكوين من عدد قليل من الملفات المختلفة. لمعرفة الاختلافات بين التكوين الخاص بك وافتراضات dovecot ، قم بتشغيل الأمر أدناه:
sudo doveconf -n
فيما يلي تكوين بسيط يعمل:
# 2.3.2.1 (0719df592): /usr/local/etc/dovecot/dovecot.conf
# OS: FreeBSD 11.2-RELEASE amd64
# Hostname: mail.example.com
hostname = mail.example.com
mail_location = maildir:~/mail
namespace inbox {
inbox = yes
location =
mailbox Archive {
auto = create
special_use = \Archive
}
mailbox Archives {
auto = create
special_use = \Archive
}
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Junk {
auto = create
autoexpunge = 60 days
special_use = \Junk
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox "Sent Mail" {
auto = no
special_use = \Sent
}
mailbox "Sent Messages" {
auto = no
special_use = \Sent
}
mailbox Spam {
auto = no
special_use = \Junk
}
mailbox Trash {
auto = no
autoexpunge = 90 days
special_use = \Trash
}
prefix =
separator = /
}
passdb {
args = imap
driver = pam
}
ssl = required
ssl_cert = </usr/local/etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_dh = </usr/local/etc/dovecot/dh.pem
ssl_key = </usr/local/etc/letsencrypt/live/mail.example.com/privkey.pem
userdb {
driver = passwd
}
ستكون معظم ملفات التكوين في conf.d
تلك هي المهمة 10-auth.conf
، 10-mail.conf
و 10-ssl.conf
.
يمكنك تكوين صناديق البريد المختلفة التي تستخدمها 15-mailboxes.conf
. ما تراه أعلاه هو تكوين جيد للعديد من الأنظمة ، ولكن قد تختلف المسافة المقطوعة. من المستحسن أن تتلاعب بهذا مع أكبر عدد ممكن من العملاء المختلفين.
معظم الإعدادات الافتراضية ستكون صحيحة. إذا كنت تريد استخدام مستخدمي النظام للمصادقة ، فسيتعين عليك التعديل 10-auth.conf
.
uncomment السطر التالي:
! include auth-system.conf.ext
علينا إنشاء معلمات Diffie-Hellman:
sudo nohup openssl dhparam -out /usr/local/etc/dovecot/dh.pem
ملاحظة: سيستغرق تشغيل هذا وقتًا طويلاً. أطول بكثير مما قد تتوقعه.
يمكننا الآن بدء Dovecot:
sudo service dovecot start
في هذه المرحلة ، لدينا خادم بريد فعال وآمن وخالي من الرسائل غير المرغوب فيها نسبيًا.
بعض الأشياء الأخرى التي يجب النظر إليها من هنا هي استخدام SpamAssassin للتخلص من الرسائل غير المرغوب فيها بشكل تجريبي ، وكذلك العثور على الم��يد من القوائم السوداء غير المرغوب فيها التي وضعتها مصادر تثق بها.
نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".
هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.
اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.
اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.
لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟
مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.
ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!
ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.
أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد