أنا أستخدم Digital Ocean (الاستضافة)، SendGrid (بروتوكول SMTP)، و Netlify (النطاق و DNS) لإعداد منتدى مفتوح لمدونتي.
لقد قمت بإعداد جزء النطاق و DNS وتمكنت من الوصول إلى صفحة التسجيل.
لكن البريد الإلكتروني لا يصل أبدًا إلى بريد المطور.
جربت التكوينات التالية في nano containers/app.yml:
DISCOURSE_HOSTNAME: ‘discourse.myblog.com ’
DISCOURSE_DEVELOPER_EMAILS: ‘adminEmail@gmail.com’
DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
DISCOURSE_SMTP_PORT: 2525
DISCOURSE_SMTP_USER_NAME: {myusername}
DISCOURSE_SMTP_PASSWORD: XX.xxxx.xxxxxxxxx
DISCOURSE_SMTP_ENABLE_START_TLS: true # (اختياري، الافتراضي true)
DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: {myusername}
DISCOURSE_SMTP_PASSWORD: XX.xxxx.xxxxxxxxx
DISCOURSE_SMTP_ENABLE_START_TLS: true # (اختياري، الافتراضي true)
DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: apiKey
DISCOURSE_SMTP_PASSWORD: XX.xxxx.xxxxxxxxx
DISCOURSE_SMTP_ENABLE_START_TLS: true # (اختياري، الافتراضي true)
DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
DISCOURSE_SMTP_PORT: 25
DISCOURSE_SMTP_USER_NAME: {myusername}
DISCOURSE_SMTP_PASSWORD: XX.xxxx.xxxxxxxxx
DISCOURSE_SMTP_ENABLE_START_TLS: false # (اختياري، الافتراضي true)
DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
DISCOURSE_SMTP_PORT: 25
DISCOURSE_SMTP_USER_NAME: {myusername}
DISCOURSE_SMTP_PASSWORD: XX.xxxx.xxxxxxxxx
DISCOURSE_SMTP_ENABLE_START_TLS: false # (اختياري، الافتراضي true)
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
عند تشغيل ./discourse-doctor واختبار إرسال بريد إلكتروني، أحصل على الرسالة:
535 Authentication failed: Bad username / password
Stephen
(Stephen)
20 مارس 2020، 5:49م
2
يبدو أنك تستخدم مفتاح API كاسم مستخدم لـ SendGrid؟
لقد جربت مفتاح API واسم المستخدم الخاص بي (المسؤول وزميل الفريق)، لكنني لم أستطع جعل الأمر يعمل بعد.
Stephen
(Stephen)
20 مارس 2020، 5:57م
4
بحسب علمي، إذا كنت ترغب في استخدام مفتاح API، يجب عليك استخدام اسم المستخدم ‘apikey’ مع كلمة المرور المرتبطة به. لا أستطيع رؤية أي شيء يشير إلى ما إذا كان الأمر حساسًا لحالة الأحرف، ولكن من الأفضل توخي الحذر.
قد ترغب في التواصل مع دعم DigitalOcean، حيث من المعروف أنهم يقومون بحظر بروتوكول SMTP الصادر إلى خدمات الجهات الخارجية على الحسابات الجديدة. هل يمكنك الاتصال عبر Telnet إلى تلك المنفذ من المضيف؟
pfaffman
(Jay Pfaffman)
20 مارس 2020، 5:59م
5
إذا لم يكن ذلك ممكنًا، فاستخدم المنفذ 2525. لن تضطر إلى الانتظار للحصول على تذكرة. أنا أستخدم المنفذ 2525 افتراضيًا. لا توجد عيوب في ذلك.
لقد جربت الرقم 2525 أيضًا…
لقد جربت أيضًا استخدام apikey ولكن لا يزال لا يعمل…
نعم، لقد حاولت الاتصال عبر telnet متبعًا هذا الدليل (How to send an Email with SMTP | SendGrid Docs | Twilio ) وتمكنت من الاتصال بنجاح.
@Stephen فكرة جيدة، سأتواصل مع Digital Ocean لحظر بروتوكول SMTP الصادر.
pfaffman
(Jay Pfaffman)
20 مارس 2020، 6:32م
9
لا حاجة لذلك لأن:
هل تظهر رسائل الاختبار في سجلات SendGrid؟
لمعرفة كيفية القيام بذلك، يمكنك سؤال فريق عمل SendGrid.
أعتقد أنه قد تكون هناك مشكلة في حالة المنفذ كـ “مُرشَّح” (Filtered)
PORT STATE SERVICE
25/tcp filtered smtp
587/tcp filtered submission
2525/tcp filtered ms-v-worlds
إليك الرسالة الواردة من Digital Ocean:
تحقق مما إذا كنت قد فتحت المنفذ 25 في جدار الحماية. يمكنك التحقق باستخدام الأمر التالي: nmap -p 25,465,587 “عنوان IP الخاص بـ Droplet الخاص بك”
مثال على أمر nmap:
nmap -p 25,465,587 142.93.189.227
Starting Nmap 7.70 ( [https://nmap.org](https://nmap.org/) ) at 2019-10-08 11:10 IST
Nmap scan report for [unms.adastratechnology.com](http://unms.adastratechnology.com/) (142.93.189.227)
Host is up (0.56s latency).
PORT STATE SERVICE
25/tcp closed smtp
465/tcp closed smtps
587/tcp closed submission
إليك الرسالة من Digital Ocean:
سيمنحك هذا فكرة عن الحالة الحالية للمنفذ 25. إذا كانت في حالة "مُرشَّح" (Filtered) أو حالة "مغلق" (Closed)، فيمكنك فتح جدار الحماية السحابي للمنفذ 25.
إليك دليلنا لأوامر iptables الشائعة: https://www.digitalocean.com/community/tutorials/iptables-essentials-common-firewall-rules-and-commands#service-mail
Stephen
(Stephen)
20 مارس 2020، 7:05م
12
المشكلة ليست في المنفذ 25 على خادمك (أي الاتصالات الواردة)، بل في حركة البيانات الصادرة من خادمك إلى مضيف بعيد على المنفذ 587.
لدى DigitalOcean تاريخ في حظر ذلك، لأن بعض الأشخاص يفتحون حسابات جديدة لارتكاب أفعال غير قانونية.
نعم، لقد قدمت تذكرة دعم وأنتظر ردهم.
هل تعتقد أن هذا الأمر يتعلق بـ SendGrid؟
@Stephen
Stephen
(Stephen)
20 مارس 2020، 7:53م
14
من شبه المؤكد أنه لا. نلاحظ الكثير من عمليات التثبيت الجديدة التي تواجه مشكلات في المنافذ الصادرة في الحسابات الجديدة، ولا يوجد شيء محدد يتعلق بـ Sendgrid.
إذا كان لديك محطة عمل تعمل بنظام Linux أو Mac، فيمكنك اختبار SMTP عبر المنفذ 587 إلى Sendgrid بشكل مستقل عن طريق تنفيذ أمر مثل:
openssl s_client -starttls smtp -connect smtp.sendgrid.com:587
إذا فشل الاتصال من خادمك الافتراضي (VPS) لكنه نجح من أي مكان آخر، فالمشكلة تكمن في حركة المرور الصادرة من DigitalOcean.
لقد جربته للتو من جهاز Mac الخاص بي وتم الاتصال بنجاح.
نفّذت هذا الكود على جهاز Mac الخاص بي (Catalina)
أطلقت الأمر openssl s_client -starttls smtp -connect smtp.sendgrid.net:587
وحصلت على النتيجة التالية
CONNECTED(00000006)
depth=3 C = US, O = "The Go Daddy Group, Inc.", OU = Go Daddy Class 2 Certification Authority
verify return:1
depth=2 C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", CN = Go Daddy Root Certificate Authority - G2
verify return:1
depth=1 C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", OU = http://certs.godaddy.com/repository/, CN = Go Daddy Secure Certificate Authority - G2
verify return:1
depth=0 OU = Domain Control Validated, CN = *.smtp.sendgrid.net
verify return:1
---
Certificate chain
0 s:/OU=Domain Control Validated/CN=*.smtp.sendgrid.net
i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
1 s:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./CN=Go Daddy Root Certificate Authority - G2
2 s:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./CN=Go Daddy Root Certificate Authority - G2
i:/C=US/O=The Go Daddy Group, Inc./OU=Go Daddy Class 2 Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGvzCCBaegAwIBAgIIR8KHdm5J8J0wDQYJKoZIhvcNAQELBQAwgbQxCzAJBgNV
BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRow
GAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjEtMCsGA1UECxMkaHR0cDovL2NlcnRz
LmdvZGFkZHkuY29tL3JlcG9zaXRvcnkvMTMwMQYDVQQDEypHbyBEYWRkeSBTZWN1
cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwHhcNMTgxMjI4MjAyMjIwWhcN
MjAxMjI4MjAyMjIwWjBBMSEwHwYDVQQLExhEb21haW4gQ29udHJvbCBWYWxpZGF0
ZWQxHDAaBgNVBAMMEyouc210cC5zZW5kZ3JpZC5uZXQwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQC/xYdx1oyPHcE6EdH61RXJK9JYA9p9GOrYhJ6rVq2c
zpGR3/4EHwaZO/daZxvTn5p3LRBBW5KBBBNCLa0Vl84dLt6skUg3oWo17mim2ly1
AegTwN15/wxqq8Hf2G4Sr9g00zlBAEs2HeOyr3SxEvLCLscYtIKG7cD+CsUi0JT6
EeDXCVL04nJIheFh4h9TRcCook97yuqt7muySrarzekatOnpv4kuU8bk0uq4ym5K
NO4zRUiCRy7JXAC2KZ4+0qhSlPFACRvygdPxK5ICvQq8/ZPlRWVn3yrWnQ4kEekp
jDT4ucOpv8V/SxYmsBRqFD35ASDj6PZLYmJFb9XdzGCzAgMBAAGjggNFMIIDQTAM
BgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAOBgNV
HQ8BAf8EBAMCBaAwNwYDVR0fBDAwLjAsoCqgKIYmaHR0cDovL2NybC5nb2RhZGR5
LmNvbS9nZGlnMnMxLTkwMS5jcmwwXQYDVR0gBFYwVDBIBgtghkgBhv1tAQcXATA5
MDcGCCsGAQUFBwIBFitodHRwOi8vY2VydGlmaWNhdGVzLmdvZGFkZHkuY29tL3Jl
cG9zaXRvcnkvMAgGBmeBDAECATB2BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUHMAGG
GGh0dHA6Ly9vY3NwLmdvZGFkZHkuY29tLzBABggrBgEFBQcwAoY0aHR0cDovL2Nl
cnRpZmljYXRlcy5nb2RhZGR5LmNvbS9yZXBvc2l0b3J5L2dkaWcyLmNydDAfBgNV
HSMEGDAWgBRAwr0njsw0gzCiM9f7bLPwtCyAzjAxBgNVHREEKjAoghMqLnNtdHAu
c2VuZGdyaWQubmV0ghFzbXRwLnNlbmRncmlkLm5ldDAdBgNVHQ4EFgQUqLajl4xR
pZ1YZD2l6KsTfcmd8t4wggF9BgorBgEEAdZ5AgQCBIIBbQSCAWkBZwB2AKS5CZC0
GFgUh7sTosxncAo8NZgE+RvfuON3zQ7IDdwQAAABZ/Z7aIYAAAQDAEcwRQIhAOhF
95cuap1qIlSVtRzNkaUbNHxpgj+RoBfxcSFgqlBZAiBNsRnVaIwWMBoR9s+a9YwC
neLWWN777jRjew5mv2DVbwB2AO5Lvbd1zmC64UJpH6vhnmajD35fsHLYgwDEe4l6
qP3LAAABZ/Z7bY8AAAQDAEcwRQIgJZMibCSMJDwTwEp64XSQQXCuYtKJDvhT7FwK
rxoyH6oCIQCz1HVQbPLwMOXQPBRQFtpYEb18JCVdzlh8+f0hITgC5gB1AF6nc/nf
VsDntTZIfdBJ4DJ6kZoMhKESEoQYdZaBcUVYAAABZ/Z7cugAAAQDAEYwRAIgQoxF
Fak6Aq9tVDo5BjaSl+90pZ8928SmDpA3XrQ7BrQCIHdOuigFbYK96gJ/GPaVNGqc
w5FKxw9Z8TnpjZH1GEC/MA0GCSqGSIb3DQEBCwUAA4IBAQBbBTL603nJ9H7ClsKR
g/XmFpGwQ4C5OftGmZ/Z/CG9iqOkLB2TPqdJ9NZRruMpWjnOnvDFoQ3NMSfDYdsn
25fzh30fx2+zIWW2IdKa1yO4A9tr3cxn4iINy/+dcNmF6tciGJtdBhZZgpyqhymu
kjuMCQRL17uVkLyrYA/+Ti5N02fzRchprOydiasnhHSdDM3HVZQOqjOvoB5omtuf
D1aldjrgW+TcILlnZxYvaqDPeMvUIZxQPzealRniQ7tmMOAgJfjZXxzuXatqXqw0
zbvQOiY2pSDn7WPxLbGafLAOFWIWhHtkEZMRC2n3WpupiZuC0pacmQeUgVY6Vabs
KU8W
-----END CERTIFICATE-----
subject=/OU=Domain Control Validated/CN=*.smtp.sendgrid.net
issuer=/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
---
No client certificate CA names sent
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 5002 bytes and written 357 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-GCM-SHA384
Session-ID: F315CBBB90B16A8F85D95F0CD18C07135A128B5FE6CE53D50C7CF81310B28732
Session-ID-ctx:
Master-Key: E4C09CCC8AECB9C596D608B79E9A5360B88E2C31EB98C770E96A5037177F7F5D92B9CFA449B8ECA7AEA5D4CB873601D4
TLS session ticket lifetime hint: 300 (seconds)
TLS session ticket:
0000 - f7 61 88 44 b6 0d 7c ce-0c 35 b3 ba 33 03 ce 33 .a.D..|..5..3..3
0010 - 95 99 62 e9 f9 ea 5e e6-00 f8 09 66 47 bd 28 cf ..b...^....fG.(.
0020 - 51 64 c5 76 3a ac b2 e2-ff 2a be 29 63 8c a8 d2 Qd.v:....*.)c...
0030 - 76 2e ba 08 32 74 4a 4b-24 c8 69 ef 71 8e da e6 v...2tJK$.i.q...
0040 - e3 dd c3 a8 19 84 02 c9-9e e7 7a 7a b8 b7 78 f3 ..........zz..x.
0050 - 02 8c e6 ff 85 0e f5 4d-f3 5a 49 b1 22 40 12 ee .......M.ZI."@..
0060 - 7d d5 8c f4 d9 50 57 0a-c2 82 06 52 9e 64 89 fd }....PW....R.d..
0070 - 21 7b e4 f0 f3 e8 2c 61-09 a7 99 1f c8 7e c5 1b !{....,a.....~..
0080 - 23 fc 11 bc a7 8d 21 d6-05 6f 86 66 5b e9 2e 87 #.....!..o.f[...
0090 - d0 98 8f b2 2b 7d 18 90-50 62 67 8f 77 8b c2 37 ....+}..Pbg.w..7
Start Time: 1584738375
Timeout : 7200 (sec)
Verify return code: 0 (ok)
---
250 AUTH=PLAIN LOGIN
Stephen
(Stephen)
20 مارس 2020، 9:08م
16
حسناً، وإذا كتبت EHLO ثم ضغطت على Enter، يجب أن تكون الاستجابة كالتالي:
250-smtp.sendgrid.net
250-8BITMIME
250-PIPELINING
250-SIZE 31457280
250-STARTTLS
250-AUTH PLAIN LOGIN
250 AUTH=PLAIN LOGIN
وهذا يثبت أنه يمكنك الاتصال بـ SendGrid. إذا فشلت العملية من قطرة DO، فإن لديك إجابتك.
أعتقد أنني قمت بالاتصال بشكل صحيح؟ إذن أعتقد أننا بخير مع SendGrid
EHLO
250-smtp.sendgrid.net
250-8BITMIME
250-PIPELINING
250-SIZE 31457280
250-STARTTLS
250-AUTH PLAIN LOGIN
250 AUTH=PLAIN LOGIN
@Stephen لا يزال في انتظاري للحصول على رد من Digital Ocean حول كيفية إلغاء حظر البريد الإلكتروني الصادر.
Stephen
(Stephen)
20 مارس 2020، 9:12م
19
حسناً، إذا قمت بإعادة ذلك من قطرة عبر SSH، هل يتصل؟
لقد تحققت للتو من إحدى قطراتي في DO، ويتصرف بنفس الطريقة حيث أن المنفذ 587 مفتوح.
إذا كنتُ محقاً سابقاً، فيجب أن يفشل الاتصال. وإذا فشل، فأنت تنتظر الشيء الصحيح - من الأفضل أن تعرف بالتأكيد بدلاً من الانتظار فقط لاكتشاف أن المشكلة كانت في مكان آخر!
pfaffman
(Jay Pfaffman)
20 مارس 2020، 9:16م
20
لقد أثبتتَ بطريقتين مختلفتين على الأقل أن البريد الصادر غير محظور من قِبَل Digital Ocean.
سأجرؤ على التخمين بأنك لا تستخدم اسم المستخدم و/أو كلمة المرور الصحيحين.