مقدمة
على خادمي 2 تدور مجالات منفصلة. قبل قصة حظر Roskomnadzor ، جمعنا حركة المرور لحوالي 2000 زيارة يوميًا ، وأرسل خادم البريد حوالي 200 رسالة يوميًا إلى جميع خدمات البريد الشائعة ، بما في ذلك جوجل وياندكس. كل شئ كان رائعا. ولكن كما يقول الفيديو الشهير: "كان كل شيء على ما يرام حتى جاء
نافالني روسكومنادزور!
الآن بعد أن تمكنا من العثور على مضيف لا تقع عناوين IP الخاصة به تحت حظر رقابة الدولة ، نشأت مشكلة أخرى. توقفت شركة Google Good Corporation عن السماح لساعي البريد الخاص بنا بتجاوز العتبة.
يرسل خادم Google MX بريدي بالرسالة التالية تقريبًا: "يبدو أن رسالتك غير مرغوب فيها ، وداعًا ..."
سجل اتصال Google SMTP050 <legale.legale@gmail.com>... Connecting to gmail-smtp-in.l.google.com. via esmtp... 050 220 mx.google.com ESMTP v6-v6si38552789wrc.432 - gsmtp 050 >>> EHLO sevenlight.ru 050 250-mx.google.com at your service, [2a02:c207:2018:3546::1] 050 250-SIZE 157286400 050 250-8BITMIME 050 250-STARTTLS 050 250-ENHANCEDSTATUSCODES 050 250-PIPELINING 050 250-CHUNKING 050 250 SMTPUTF8 050 >>> STARTTLS 050 220 2.0.0 Ready to start TLS 050 >>> EHLO sevenlight.ru 050 250-mx.google.com at your service, [2a02:c207:2018:3546::1] 050 250-SIZE 157286400 050 250-8BITMIME 050 250-ENHANCEDSTATUSCODES 050 250-PIPELINING 050 250-CHUNKING 050 250 SMTPUTF8 050 >>> MAIL From:<root@sevenlight.ru> SIZE=297 050 250 2.1.0 OK v6-v6si38552789wrc.432 - gsmtp 050 >>> RCPT To:<legale.legale@gmail.com> 050 >>> DATA 050 250 2.1.5 OK v6-v6si38552789wrc.432 - gsmtp 050 354 Go ahead v6-v6si38552789wrc.432 - gsmtp 050 >>> . 050 550-5.7.1 [2a02:c207:2018:3546::1 7] Our system has detected that this 050 550-5.7.1 message is likely unsolicited mail. To reduce the amount of spam sent 050 550-5.7.1 to Gmail, this message has been blocked. Please visit 050 550-5.7.1 https://support.google.com/mail/?p=UnsolicitedMessageError 050 550 5.7.1 for more information. v6-v6si38552789wrc.432 - gsmtp
باستخدام هذا الأمر ، أرسلت رسالة اختبار:
echo "Subject: Hello baby!" | sendmail -v legale.legale@gmail.com
لن أكتب عن رقصاتي مع الدف في محاولات اختراق فلاتر البريد العشوائي. لا يسعني إلا أن أقول أنني تم نقلي طوال الليل ، لكنني لم أستطع أن أنجح إلا في اليوم التالي. لذلك قررت كتابة هذا الدليل.
تعليمات إعداد SPF + DKIM على UBUNTU 18.04
انحدار هذه التعليمات هو أنها تعمل ، على عكس العديد من الآخرين. أضمن أنه يمكنك تكوين نطاقين على الأقل على خادم واحد دون صعوبة كبيرة.
1. تثبيت الحزم اللازمة
apt-get install sendmail opendkim -y
2. تكوين opendkim
التكوين هنا: /etc/opendkim.conf
/etc/opendkim.confإعادة التشغيل التلقائي نعم
UMask 002
سيسلوج نعم
معدل إعادة التشغيل التلقائي 10/1 ساعة
استرخاء الكنسي / بسيط
refile ExternalIgnoreList: / etc / opendkim / TrustedHosts
إعادة تحميل الملف الداخلي: / etc / opendkim / TrustedHosts
ملف تعريف KeyTable: / etc / opendkim / KeyTable
جدول التوقيع: / etc / opendkim / SigningTable
LogWhy نعم
وضع Sv
PidFile /var/run/opendkim/opendkim.pid
الخوارزمية rsa-sha256
مأخذ التوصيل: 8891 @ localhost
SyslogSuccess نعم
TemporaryDirectory / var / tmp
Userend opendkim: opendkim
3. إعداد مفاتيح وقواعد التوقيع
سأصف الإجراء الخاص بإنشاء مفاتيحك الخاصة لأولئك الذين يريدون الاستقلال الذاتي الكامل. أنا شخصياً أستخدم خدمة Yandex.Direct Mail للنطاق pdd.yandex.ru ، لذا لدي المفاتيح التي تم إنشاؤها بواسطة Yandex.
# mkdir -p /etc/opendkim/keys/*****.ru # cd /etc/opendkim/keys/******.ru # #-s -d opendkim-genkey -s mail -d ******.ru # 2 mail.txt mail.private # opendkim:opendkim chown opendkim:opendkim mail.* # chmod 600 mail.private
بعد ذلك ، نقوم بتوصيل مفتاح DKIM السري الذي تم إنشاؤه أو تنزيله من Yandex.
نحن مهتمون بهذه الخطوط الثلاثة من تكوين opendkim:
InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable
يحتوي
/etc/opendkim/TrustedHosts
على مضيفين يمكنهم الوصول إلى خادم opendkim لتوقيع رسائل البريد الإلكتروني.
/ etc / opendkim / TrustedHosts127.0.0.1
المضيف المحلي
######. ru
******. رو
يحتوي الملف الثاني
/etc/opendkim/KeyTable
على جدول من المفاتيح الخاصة وإدخالات DKIM ذات الصلة ، وهي التالية:
[selector]._domainkey.[domain_name]
/ etc / opendkim / KeyTablemail._domainkey.sevenlight.ru sevenlight.ru:mail:/etc/opendkim/keys/sevenlight.ru/mail.private
mail._domainkey.st-goods.ru st-goods.ru:mail:/etc/opendkim/keys/st-goods.ru/mail.private
يحتوي الملف الثالث
/etc/opendkim/SigningTable
على جدول قواعد لتوقيع الرسائل. يشير إلى من الذي ومعه المفتاح للتوقيع.
/ etc / opendkim / SigningTable*@sevenlight.ru mail._domainkey.sevenlight.ru
*@st-goods.ru mail._domainkey.st-goods.ru
ننشئ هذه الملفات ، مشيرة إلى مجالنا ومسارنا إلى الملف الرئيسي. يكمل هذا إعداد opendkim.
4. تكوين الإرسال
يعد تكوين mailmail أمرًا بسيطًا قدر الإمكان. نحتاج فقط إلى إضافة الأسطر التالية إلى نهاية ملف التكوين النموذجي
/etc/mail/sendmail.mc
:
# starttls include(`/etc/mail/tls/starttls.m4')dnl # sendmail opendkim INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')dnl
لإرسال البريد بشكل افتراضي من المجال الصحيح ، تحتاج إلى إجراء تغيير آخر في ملف
/etc/mail/sendmail.mc
نحن نبحث عن خط مشابه لهذا:
MASQUERADE_AS(`st-goods.ru')dnl
استبدل بالنطاق المطلوب. سيتم استخدام هذا المجال كعنوان الإرجاع الافتراضي. يرجى ملاحظة أن علامات الاقتباس هناك ، بشكل دقيق ، العلامة الأولى
`
تسمى gravis. لذلك لسبب ما تم الحصول عليه في تكوين mailmail.
سنضيف الآن إدخالات إلى ملف / etc / hosts. يعد ذلك ضروريًا حتى يتمكن mailmail من تمرير الرسائل عبر عامل التصفية. لقد تم تجريبًا أنه إذا لم تقم بإضافة إدخالات ، فستظل جميع السجلات نقية ، دون إظهار خطأ واحد ، ولكن الأحرف غير موقعة.
#ipv4 echo -e "127.0.0.1 st-goods.ru" >> /etc/hosts #ipv6 echo -e "::1 st-goods.ru" >> /etc/hosts
الآن نحن بحاجة إلى إعادة بناء الإرسال باستخدام الإعدادات الجديدة.
# # "" sendmailconfig # opendkim sendmail service opendkim restart && service sendmail restart
الآن خادم الإرسال لدينا قادر على تمرير الرسائل الصادرة من خلال خادم opendkim ، الذي يضيف توقيعًا رقميًا ويشفّر رؤوس الرسائل المرسلة. يبقى نشر المفتاح العام للمضيف بحيث يمكن فك تشفير الرؤوس والتأكد من عدم تغيير الرؤوس.
5. إعدادات سجل DKIM TXT على خادم DNS
يجب تعليق المفتاح على خادم DNS في سلسلة نوع TXT مع المحتويات التالية:
المضيف:
mail._domainkey
القيمة:
v=DKIM1; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2wtGTw/5KPjtlIEh282JY7ovxZ/8eqveFn9ivhzpYJldl3fBEOKw
v=DKIM1; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2wtGTw/5KPjtlIEh282JY7ovxZ/8eqveFn9ivhzpYJldl3fBEOKw
التفسيرات:
p=
هذا هو مفتاحنا العام
v=
يحدد رقم إصدار DKIM
t=
يحدد الأعلام ؛ لا يتم تعيين الأعلام بشكل افتراضي. هناك علامتان "y" و "s".
يشير
y
إلى أن DKIM في وضع الاختبار.
s
تعني الوضع الذي يجب أن يتطابق فيه الجزء الصحيح من عنوان البريد بعد @ تمامًا مع المجال المحدد في المعلمة d = DKIM لتوقيع الرسالة.
يجب تحديد المضيف كما يلي:
[selector]._domainkey
لدينا محدد بريد ، لذلك سيكون المضيف على النحو
mail._domainkey
:
mail._domainkey
يجب
/etc/opendkim/keys/st-goods.ru/mail.txt
المفتاح العام من الملف
/etc/opendkim/keys/st-goods.ru/mail.txt
/etc/opendkim/keys/st-goods.rumail._domainkey IN TXT ("v = DKIM1؛ h = sha256؛ k = rsa؛„
"P = MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsLFjSAqvfSrjvF0JfMkiSzqWRhXwwVPzW5OEtRFSoDVBwDxR6hMna1iESnUQ1OzbUQQPnDPbrFXkalDCAXigZqltTSAV + JQSyOwhi0b88WS3djb1IkA / qioCobjlhMFSatvcmz5kMkG8oeoHhVFQ / BE84PwDPTXRmcObDvg7meUmkYpdxeyr + tcG5ezuC + s15I00 + 6NSAaj0Tj»
«Y / Bl2e2TE / WG45wVShlQ85E8IpYixscd0qDJ9 / NbZrbWIfy8shujWVk5izNU4PqcWwW7 / H9uTkhAbMu0fgqT8W9Jv / GRVAireOCzMl13E9PVANt4o + ywqyGk38vSY8QdgJsZPDUQIDAQAB»)؛ - بريد مفتاح DKIM لـ st-goods.ru
ينتقل المفتاح من p = إلى آخر اقتباس. يجب إزالة علامات الاقتباس نفسها.
6. إعداد SPF
SPF (إطار سياسة المرسل) هو تقنية أخرى للحماية من الرسائل غير المرغوب فيها ، لن أتحدث عنها. كلمتان فقط لفهم جوهر هذه التكنولوجيا. في سجل نظام أسماء النطاقات لأحد النطاقات ، يتم تسجيل عناوين الخوادم التي لها الحق في إرسال البريد من هذا النطاق بنفس طريقة تسجيل مفتاح DKIM العام. نحتاج إلى تسجيل عناوين IP لخادمنا في هذا الإدخال. في حالتي ، تتم إضافة خادم Yandex أيضًا إلى القائمة.
هنا مثال لمنصبي:
المضيف:
@
القيمة:
v=spf1 a mx include:_spf.yandex.net ip4:173.249.51.13 ip6:2a02:c207:2018:3546::1 ~all
بناء الجملة بسيط. أولاً ، تتم الإشارة إلى إصدار spf ، ثم بعد مسافة مع أو بدون زائد ، يشار إلى عناوين الخوادم التي لها الحق في إرسال البريد من هذا المجال. لدي سجلات a و mx ، مما يعني أن الخوادم من سجلات DNS A و MX مدرجة أيضًا في قائمة المسموح بها. عن طريق التضمين: يتم تحديد عنوان خادم Yandex ، ثم عناوين IPv4 و ipv6 لخادمي. ~ جميع الوسائل الفاشلة "فشل لينة". على سبيل المثال قد تستمر جميع العناوين غير المدرجة في السماح وفقًا لتقدير الخادم المتلقي. -كل يعني رفض صعب.
7. إعداد DMARC
المسمار الأخير لاختراق معقل Gmail هو DMARC. يحدد DMARC ما يجب فعله برسائل البريد الإلكتروني التي تخفق في نظام التعرف على هوية المرسل (SPF) أو DKIM.
نفعل كل شيء تمامًا من خلال سجل TXT DNS.
المضيف:
_dmarc
القيمة:
v=DMARC1; p=none
v=DMARC1; p=none
هنا نثبت أنه إذا لم تجتاز الرسائل نظام التعرف على هوية المرسل (SPF) أو DKIM ، فلا يلزم فعل أي شيء. يمكنك وضع p = رفض. ثم سيتم رفض هذه الرسائل.
تحقق
أرسل لنفسك رسالة.
echo "Subject: Hello baby!" | sendmail -v legale.legale@gmail.com
نحن ننظر إلى أحدث الإدخالات في سجل البريد.
tail -f /var/log/mail.log | grep dkim
يجب أن يظهر سطر مشابه لهذا:
Jun 11 22:07:55 sevenlight opendkim[6473]: w5BK7sl9008069: DKIM-Signature field added (s=mail, d=st-goods.ru)
إذا كان هناك خط ، فقد عمل خادم الإرسال و opendkim معًا ووقعوا على رسالتك. إذا لم يكن هناك مثل هذا الخط ، فراجع قسم "المشكلات المحتملة".
الآن دعونا نرى ما حدث في صندوق البريد. افتح الحرف واضغط على زر السهم لأسفل في الزاوية العلوية اليمنى من الحرف. في القائمة المنسدلة ، حدد العنصر "إظهار الأصلية".
إليك ما حصلت عليه:
Message ID <201806112007.w5BK7sUS008068@******.ru> Created on: 11 June 2018 at 22:07 (Delivered after 2 seconds) From: info@*****.ru To: legale.legale@gmail.com Subject: №2221 - ******.ru SPF: PASS with IP 2a02:c207:2018:3546:0:0:0:1 Learn more DKIM: 'PASS' with domain *****.ru Learn more DMARC: 'PASS' Learn more
الربح $$$
المشاكل المحتملة
آمل بصدق أنه لن تكون هناك حاجة لقراءة هذا القسم ، لكن التقنية شيء معقد ... في بعض الأحيان لا يكون واضحًا لمن يعمل لصالح من.
أولاً ، تحقق لمعرفة ما إذا كنت قد فعلت كل شيء بالتسلسل الدقيق المحدد في التعليمات.
أولاً ، تحقق من الملف / etc / hosts من أجل صحة التغييرات فيه. كان لدي معظم المشاكل هناك. بعد ذلك ، تحقق من سجل النظام بحثًا عن أخطاء dkim. بينما كنت أتجول ، واجهت موقفًا حيث كان من المستحيل قراءة opendkim المفتاح السري ، على الرغم من أنني عينت المستخدم opendkim كمالك للملف. بعد ذلك ، يجب عليك فحص سجل تنفيذ الأمر sendmailconfig بعناية. كان لدي حالة استخدمت فيها علامة الاقتباس المفردة المعتادة بدلاً من الحصى الموضوعة ، وأقسم sendmailconfig على ذلك. إذا فشل كل شيء آخر اكتب لي واستمر في المحاولة.