إعداد HOWTO ubuntu 18.04 sendmail + DKIM + SPF + DMARC أو كيف تمكنت من الدخول إلى معقل Gmail

مقدمة


على خادمي 2 تدور مجالات منفصلة. قبل قصة حظر Roskomnadzor ، جمعنا حركة المرور لحوالي 2000 زيارة يوميًا ، وأرسل خادم البريد حوالي 200 رسالة يوميًا إلى جميع خدمات البريد الشائعة ، بما في ذلك جوجل وياندكس. كل شئ كان رائعا. ولكن كما يقول الفيديو الشهير: "كان كل شيء على ما يرام حتى جاء نافالني روسكومنادزور!

الآن بعد أن تمكنا من العثور على مضيف لا تقع عناوين IP الخاصة به تحت حظر رقابة الدولة ، نشأت مشكلة أخرى. توقفت شركة Google Good Corporation عن السماح لساعي البريد الخاص بنا بتجاوز العتبة.

يرسل خادم Google MX بريدي بالرسالة التالية تقريبًا: "يبدو أن رسالتك غير مرغوب فيها ، وداعًا ..."

سجل اتصال Google SMTP
050 <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 / TrustedHosts
127.0.0.1
المضيف المحلي
######. ru
******. رو

يحتوي الملف الثاني /etc/opendkim/KeyTable على جدول من المفاتيح الخاصة وإدخالات DKIM ذات الصلة ، وهي التالية: [selector]._domainkey.[domain_name]

/ etc / opendkim / KeyTable
mail._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.ru
mail._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 على ذلك. إذا فشل كل شيء آخر اكتب لي واستمر في المحاولة.

Source: https://habr.com/ru/post/ar415569/


All Articles