신규 셀프호스트 설치(ubuntu 20.04) 시 관리자 활성화 이메일이 전송되지 않음

커뮤니티 여러분 안녕하세요,

약 1년 전부터 VPS(ubuntu 18.04)에 자체 호스팅된 Discourse를 안정적으로 운영하고 있습니다. 포럼이 성장하면서 더 강력한 VPS로 이전할 준비를 시작했습니다. 최소 설치 ubuntu 20.04 이미지를 가져와 일반적인 보안 강화 설정을 적용하고, 30분 설치 가이드에 따라 discourse docker를 설치했습니다. 기존에 잘 작동하던 설치 환경과 동일한 값을 사용했습니다. 그런데: 활성화 이메일이 전송되지 않습니다. 새로운 Discourse 설치에서 이메일 문제 해결 가이드를 참고했지만 도움이 되지 않았습니다. telnet으로 연결은 가능하지만, ./discourse-doctor를 실행할 때 다음과 같은 오류가 발생합니다:

>==================== MAIL TEST ====================
For a robust test, get an address from http //www mail-tester com/
Or just send a test message to yourself.
Email address for mail test? ('n' to skip) [anonymized]: test-9ymkghbvc@srv1 mail-tester com
Sending mail to test-9ymkghbvc@srv1.mail-tester com. . .
Testing sending to test-9ymkghbvc@srv1.mail-tester com using smtp mailbox org:587.
==================== ERROR ======================
                                    UNEXPECTED ERROR
>
>503 5.5.1 Error: authentication not enabled
>
>
>================== SOLUTION =====================
>This is not a common error. No recommended solution exists!
>
>Please report the exact error message above to https //meta discourse org/
(And a solution, if you find one!)
=================================================

(여기에 게시할 수 있도록 위의 URL 일부 문자를 제거했습니다)

이상한 점은, 잘 작동하는 VPS에서도 ./discourse-doctor를 실행하면 동일한 오류가 발생한다는 것입니다. 따라서 이 오류가 문제의 원인인지 알 수 없습니다.
보시다시피 저는 이메일 제공자로 mailbox.org를 사용하고 있으며, 이는 매우 잘 작동하고 프라이버시 측면과 견고한 이메일 인프라 구성이라는 점에서 훌륭한 선택지입니다. 호스트와 포트를 확인했으며, Thunderbird와 다른 discourse 설치 환경에서도 수년간 이 설정을 사용해 왔습니다.

어떤 아이디어가 있을까요? 두 VPS 사이의 유일한 차이는 잘 작동하는 쪽은 ubuntu 18.08을, 문제가 발생하는 쪽은 ubuntu 20.04를 실행하고 있다는 점입니다.

감사합니다, cazee

하드닝 과정에서 587 포트를 실수로 차단한 건가요?

yaml.app 파일에 오타가 있나요?

smtp mailbox org:587

이 부분이

smtp.mailbox org:587

이어야 하지 않나요?

마침표에 주목해 주세요.

제안해 주셔서 감사합니다.

포트 587은 열려 있으며, 문제 해결 가이드에 언급된 대로 telnet으로 smtp 서버에 연결할 수 있습니다.
ufw를 비활성화한 상태에서도 테스트를 해 보았지만, 결과는 동일합니다.

yaml 파일에 오타는 없습니다. 게시글에서 이 점들은 의도적으로 제거했습니다(새로운 포럼 계정이라 게시글에 URL을 2개까지만 허용됩니다).

그 밖에 확인할 수 있거나 할 수 있는 것이 있을까요?

코드를 적절한 코드 블록으로 게시해야 합니다. 그렇지 않으면 문제가 발생했기 때문입니다.

드디어 이 문제를 해결했습니다.

원인은 Discourse가 기본적으로 사용하는 발신자 이메일 주소였습니다. 이 주소는 설정 시 입력한 호스트네임(제 경우에는 v220200xxxxxxxxxxxx.powersrv.de와 유사한 형태)을 기반으로 생성되며, 그 결과 발신자 주소가 noreply@v220200xxxxxxxxxxxx.powersrv.de가 되어 SMTP 서버에 의해 거부되었습니다.

그렇다면 왜 이런 비우호적인 호스트네임을 사용했을까요? 단순히 기존 서버를 대체할 목적으로 준비했기 때문입니다. 기존 서버는 성장한 Discourse 커뮤니티에 비해 너무 작아지고 있었거든요. 나중에 DNS 설정을 변경하여 이 새 서버를 가리키기 전에 새 서버를 준비하고 테스트하고 있었습니다. 여기에서 임시로 우호적인 DNS 설정을 만드는 데 시간을 절약하고 싶었기 때문입니다.

문제를 해결하는 방법?
app.yml 파일의 끝부분에서 다음 줄을 검색하세요:

## If you want to set the 'From' email address for your first registration, uncomment and change:
## After getting the first signup email, re-comment the line. It only needs to run once.

주석을 해제하고 마지막 줄을 SMTP 서버가 유효한 발신자로 받아들이는 주소로 조정하세요. 예를 들어:
- exec: rails r "SiteSetting.notification_email='USER@DOMAIN.TLD'"

이제 변경 사항을 적용하려면 ./launcher rebuild app을 실행하세요. 그리고 voilà - 이제 활성화 이메일이 전송되고 관리자 계정을 활성화하여 설정을 완료할 수 있습니다.

어떻게 알아냈나요?
웹 호스팅 제공업체에서 새로운 메일 계정을 만들고 이 SMTP 자격 증명을 사용하여 Discourse 설정을 다시 실행했습니다 - 그리고 예상대로 활성화 이메일을 받았습니다. 따라서 이것이 SMTP 설정(ubuntu / docker / discourse 설정과 관련된 다른 것들이 아닌)과 관련되어 있음을 알 수 있었습니다.
이 다른 SMTP 서버로 관리자 계정을 활성화한 후, 설정 > 이메일 > 건너뜀으로 이동하여 활성화 이메일 전송 실패 기록을 발견했습니다: 553 5.7.1 <noreply@v220200xxxxxxxxxxxx.powersrv.de>: Sender address rejected: not owned by user USER@DOMAIN.TLD

결론
Discourse 개발팀의 주의를 Suggestion - allow optional system email “from” setting during setup 기능 요청에 기울여 주셨으면 합니다. 우호적인 호스트 주소를 갖지 않은 테스트 설치(예: 인스턴스의 실제 업그레이드 전에 몇 가지 테스트를 실행하기 위한 복사본)를 고려해 주십시오. 이렇게 하면 app.yaml에 접근하지 않고도 이러한 설치를 더 원활하게 구성할 수 있습니다. 또한 제 생각에는 관리자에게 Discourse 호스트네임에 종속되지 않은 이메일 주소를 사용할 수 있는 선택권을 주는 것이 좋습니다.

감사합니다 :slight_smile:

코드 블록을 게시하는 방법을 찾아보라고 조언해 주신 @codinghorror님께도 감사드립니다.

discourse-setup에 대한 변경 사항을 작업 중이며, 이 변경 사항으로 인해 설정 과정에서 notification_email을 설정해야 합니다. 이렇게 하면 앞으로 여러분과 같은 문제를 해결할 수 있을 것입니다.

이 변경 사항이 이제 병합되어, 신규 설치 시 해당 항목을 묻게 됩니다!