이메일 전송이 작동하지 않아요

DigitalOcean의 Discourse Droplet에서 이메일을 보내지 못하고 있습니다. 받는 오류 메시지는 다음과 같습니다:

Delivered mail d8f9bf03-a3ce-4b42-8226-fc4f40a9c724@foo.barbar.com (5099.4ms)

Job exception: 504 5.7.4 Unrecognized authentication type [BL0PR0102CA0036.prod.exchangelabs.com]

제 설정은 다음과 같습니다:

  DISCOURSE_SMTP_ADDRESS: smtp.office365.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: foo@bar.com
  DISCOURSE_SMTP_PASSWORD: "mypassword"
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (선택 사항, 기본값은 true)

Droplet에서 telnet을 시도해 보았지만 오류가 발생하지 않았습니다:
telnet smtp.office365.com 587

문제가 무엇일까요? Python으로 로컬에서 SMTP 설정 조합을 테스트해 보았을 때 정상적으로 작동하므로, 이것이 문제가 아니라고 추정하고 있습니다.

안녕하세요,
다음 내용을 추가해 보세요:

  DISCOURSE_SMTP_AUTHENTICATION: login

그리고 app.yml 파일의 끝에 다음을 추가하세요:

 - exec: rails r "SiteSetting.notification_email='foo@bar.com'"`

Hi mik
exec 명령이 실패했습니다:

FAILED

--------------------

Pups::ExecError: rails r "SiteSetting.notification_email='foo@bar.com'"` 가 반환값 #<Process::Status: pid 2229 exit 2>와 함께 실패했습니다

실패 위치: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec 가 파라미터 "rails r \"SiteSetting.notification_email='foo@bar.com'\"`와 함께 실패했습니다

9628e31c775b74ad0f3a555b6af27701aa40b1f8b86419fa44a7c389cc5e34ae

** BOOTSTRAP 실패 ** 이전의 오류 메시지를 확인하려면 위로 스크롤하세요. 오류가 하나 이상 있을 수 있습니다.

./discourse-doctor 도구가 문제를 진단하는 데 도움이 될 수 있습니다.

exec 명령을 제외하고 다음을 추가한 업데이트를 수행해도 오류가 반환되지 않습니다.

  DISCOURSE_SMTP_AUTHENTICATION: login

오류 대신 다음과 같은 메시지만 표시됩니다:
Delivered mail be6d8718-5445-48cc-a120-6d6d1eab9eb7@discourse.bar.com (4307.2ms)

하지만 여전히 받은 편지함에 이메일이 도착하지 않습니다(스팸 폴더도 확인했습니다).

올바른 설정을 찾고 오류 메시지를 확인해 보려면 다음을 시도해 보세요:

docker exec -t -i  id_of_your_container /bin/bash

그 다음 컨테이너 안에서:

apt install s-nail
echo "This is the message body and contains the message" | s-nail -r "foo@bar.com" -s mysubject -S "smtp=smtp.office365.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="foo@bar.com" -S smtp-auth-password="xxxxxxxx" -S ssl-verify=ignore youremail@example.com

다양한 값(예: smtp-auth=login)을 변경하여 올바른 값을 찾아볼 수 있습니다. 그러면 더 정확한 오류 메시지를 확인할 수 있을지도 모릅니다.

echo "This is the message body and contains the message" | s-nail -r "foo@bar.com" -s mysubject -S "smtp=smtp.office365.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="foo@bar.com" -S smtp-auth-password="xxxxxxxx" -S ssl-verify=ignore youremail@example.com

이렇게 하니까 작동했고 메일을 받았습니다! 다만 비밀번호가 '!'로 시작해서 smtp-auth-password="xxxxxxxx"를 작은따옴표로 바꿔야 했습니다.

제 설정과 비교했을 때 볼 수 있는 유일한 차이는 이 플래그입니다:
-S ssl-verify=ignore

이것도 추가해야 하나요?
도움 주셔서 감사합니다!

다음 내용을 추가해 보세요:

DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

설정 파일에서 이 값은 ssl-verify=ignore 와 동일합니다.

에러는 없는데 여전히 받은 편지함에 이메일이 도착하지 않아요 :frowning: 지금까지 설정을 정리하면 다음과 같습니다:

  DISCOURSE_SMTP_ADDRESS: smtp.office365.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: info@foo.com
  DISCOURSE_SMTP_PASSWORD: 'xxx'
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (선택 사항, 기본값 true)
  DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

다시 한 번 추가를 시도해 주세요 (s-nail 커맨드 라인 테스트의 “-r” 옵션과 _동일_합니다 :

  - exec: rails r "SiteSetting.notification_email='foo@bar.com'"`

이메일은 계정과 동일해야 합니다.

또한 app.yml 파일의 들여쓰기를 확인하고, 앞의 "-"를 잊지 마세요. 공백 2칸, 그다음 “-”, 그다음 공백 1칸, 그리고 “exec…” 순서입니다 :slight_smile:

저도 같은 문제를 겪고 있습니다. 저도 Digital Ocean에서 Discourse를 설치한 드롭렛을 생성했습니다. 위에서 제시된 모든 방법을 시도하고, 매번 재빌드(sudo ./launcher rebuild app)한 후 “sudo ./discourse-doctor” 명령을 실행해 보았습니다.

504 5.7.4 Unrecognized authentication type [BL0PR01CA0015.prod.exchangelabs.com]

저도 컨테이너 내에서 s-nail을 사용했을 때 문제가 없었습니다. “-S ssl-verify=ignore” 절을 생략하고 테스트해도 정상적으로 작동했습니다. Digital Ocean 드롭렛에 설치되는 구성이 이메일을 올바르게 보내는지 확인해 주실 수 있는 분 계신가요?

메일 관리자에게 smtp_authentication의 유효한 값이 무엇인지 확인한 후, DISCOURSE_SMTP_AUTHENTICATION을 작동하는 값으로 설정하세요.

도움 주셔서 감사합니다. 저는 포기하고 다른 포럼 솔루션으로 전환했습니다.

마이크로소프트(Microsoft)이며, 안내 사항은 다음과 같습니다. smtp_authentication 항목은 지정되어 있지 않습니다.

이런 유형의 서버를 지원하지 않나요? 단순히 계정을 만들고 서버에 연결한 뒤, 어떤 설정을 해야 하는지 알려줄 수 있을까요?

DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

이렇게 하니까 제 문제가 해결되었습니다. 감사합니다!