여러분 안녕하세요,
Discourse 설치 환경에서 SMTP를 설정하는 데 고생하고 있는데, 꽤나 까다로운 문제입니다. 이 게시물을 포함한 수많은 게시물을 살펴보았지만 해결하지 못했습니다.
상황은 이렇습니다. 제가 겪는 문제는 사용해야 하는 사용자 이름과 비밀번호의 형식과 길이에 관련이 있을 것으로 추정됩니다. SMTP 서버로 Azure Communication Service를 사용하고 있으며, 이는 Azure Entra App(구 Azure Active Directory)을 포함한 특정 구성을 요구합니다.
핵심은 다음과 같습니다. 사용자 이름 형식은 다음과 같습니다(실제 인증 정보가 아닌 예시입니다):
<Azure Communication Services 리소스 이름>.<Entra Application Id>.<Entra Application Tenant Id>
예를 들어: 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
사용자 이름과 비밀번호를 다양한 방식으로(단일 따옴표, 이중 따옴표, 또는 아예 따옴표를 붙이지 않는 등) 감싸서 시도해 보았지만 결과는 동일합니다.
그 외 시도해 볼 수 있는 다른 방법이 있다면 조언이나 제안을 주시면 감사하겠습니다.