مشكلة في إعداد SMTP في Discourse مع خدمة اتصالات Azure

مرحباً بالجميع،

لقد كنت أصارع مع إعداد SMTP على تثبيت Discourse الخاص بي، وقد كان ذلك تحديًا كبيرًا. لقد تعمقت في العديد من المشاركات مثل هذه دون جدوى.

إليك القصة: أشك في أن مشاكلي مرتبطة بتنسيق وطول اسم المستخدم وكلمة المرور التي يُطلب مني استخدامها. أنا أستخدم Azure Communication Service لخادم SMTP الخاص بي، والذي يتطلب تكوينًا محددًا يتضمن Azure Entra App (المعروف سابقًا باسم Azure Active Directory).

للوصول إلى صلب الموضوع، يبدو تنسيق اسم المستخدم شيئًا كهذا (ليست بيانات اعتماد فعلية، مجرد مثال):

اسم مورد خدمات الاتصال في Azure.معرف تطبيق Entra.معرف مستأجر تطبيق Entra

إليك مثال: my-communication-service.7d8233e0-c230-4468-a2de-1d03aa64bb71.49ba4f9c-3b18-43df-b5fd-5e203ba6e031

لمزيد من التفاصيل، تحقق من هذا الرابط.

في هذه الأثناء، تحتاج كلمة المرور إلى الالتزام بتنسيق سر تم إنشاؤه بواسطة Azure، مثل:

b_C8Q~WjHH~MtFQptMj8wR1KroOZYigGy3A3Zc5M

الآن، لقد قمت بإعداد هذا بنجاح في C# باستخدام بيانات اعتماد مماثلة.

 private static void SendMail()
    {
        string smtpAuthUsername = "my-communication-service.7d8233e0-c230-4468-a2de-1d03aa64bb71.49ba4f9c-3b18-43df-b5fd-5e203ba6e031";
        string smtpAuthPassword = "a~C8Q~WjHH~MtFQptMj8wR1KroOZYigGy3A3Zc5M";

        string sender = "DoNotReply@my-domain.com";
        string recipient = "admin@my-domain";
        string subject = "You a chosen";
        string body = "One gorgeous body";
        string smtpHostUrl = "smtp.azurecomm.net";

        using (var client = new SmtpClient(smtpHostUrl))
        {
            client.Port = 587;
            client.Credentials = new NetworkCredential(smtpAuthUsername, smtpAuthPassword);
            client.EnableSsl = false;

            var message = new MailMessage(sender, recipient, subject, body);

            try
            {
                client.Send(message);
                Console.WriteLine("The email was successfully sent using Smtp.");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Smtp failed with the exception: {ex.Message}.");
            }
        }
    }

ولكن، عندما أحاول تطبيق هذه الإعدادات في Discourse، تبدأ الأمور في التصرف بشكل غريب. إليك ما قمت بتكوينه:

DISCOURSE_SMTP_ADDRESS: smtp.azurecomm.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: "my-communication-service.7d8233e0-c230-4468-a2de-1d03aa64bb71.49ba4f9c-3b18-43df-b5fd-5e203ba6e031"
DISCOURSE_SMTP_PASSWORD: "b_C8Q~WjHH~MtFQptMj8wR1KroOZYigGy3A3Zc5M"
DISCOURSE_SMTP_ENABLE_START_TLS: true
DISCOURSE_SMTP_DOMAIN: my-domain.com
DISCOURSE_NOTIFICATION_EMAIL: DoNotReply@my-domain.com

ومع ذلك، على الرغم من هذا الإعداد، ما زلت أتلقى خطأ في المصادقة كما هو موضح في مقتطف السجل:

Job exception: Net::SMTPAuthenticationError

لقد جربت تضمين اسم المستخدم وكلمة المرور بطرق مختلفة - علامات اقتباس فردية، علامات اقتباس مزدوجة، أو حتى تركها فارغة تمامًا. لكن النتيجة تظل كما هي.

أي تلميحات أو اقتراحات حول ما يمكنني تجربته أيضًا ستكون موضع تقدير كبير.

إعجاب واحد (1)

مرحباً، لقد واجهت نفس المشكلة مع Azure Communication Service.

وفقًا لوثائق Microsoft، أعتقد أنه قد يكون السبب هو أن Microsoft Entra يجب أن يكون مدعومًا من قبل التطبيق، ولكن Discourse للأسف لا يدعم ذلك.

في هذه الأثناء، أتطلع إلى أي طرق أخرى متاحة أيضًا.

لقد واجهت نفس المشكلة ووجدت هذا الموضوع في بحث على الويب، ويبدو أنه (تمامًا مثل خوادم البريد الإلكتروني Microsoft 365 قبل أن تتخلى عن المصادقة المستندة إلى كلمة المرور) يتم دعم AUTH LOGIN فقط، وليس AUTH PLAIN الذي هو الافتراضي في Discourse في وقت كتابة هذا التقرير.

يؤدي تعيين DISCOURSE_SMTP_AUTHENTICATION: login في تكوين الحاوية إلى عمل البريد الإلكتروني. ومن الجدير بالذكر أيضًا أنه بشكل افتراضي، فإن البريد الإلكتروني الوحيد المسموح به للمرسل هو DoNotReply@domain.example الافتراضي - إذا لم تقم بتعيين هذا، فسيتم رفض رسائل البريد الإلكتروني الخاصة بك مع الخطأ “550 5.3.5 اسم مستخدم مرسل البريد الإلكتروني غير صالح”.

4 إعجابات

يبدو أن هذا تم إصلاحه الآن