안녕하세요,
./discourse-setup bash 스크립트가 PUPS 설정 파일에 DISCOURSE_SMTP_DOMAIN을 입력하지 않습니다.
컨테이너 내에서 rake admin:create를 사용했으며, 다음과 같은 GUI 영향이 확인되었습니다.
일정 기간 동안 호스트 이름으로 채워진 적이 있는 것 같습니다. 하지만 대부분의 경우 그것은 중요하지 않습니다.
DISCOURSE_NOTIFICATION_EMAIL에서 @ 이후의 이메일 도메인을 추출할 수 있는 정규식(regex)이 있을까요?
웹 도메인과 이메일 도메인이 다른 배포 사례를 고려해야 합니다.
다음과 같은 것이 있을까요:
DISCOURSE_SMTP_DOMAIN=$(echo "$DISCOURSE_NOTIFICATION_EMAIL" | sed -E 's/^[^@]+@(.+)$/\1/')
이 변수는 SMTP 대화 중 클라이언트가 사용하는 EHLO 호스트명을 설정합니다.
거의 아무도 이 변수가 필요하지 않으며, 어떤 값으로 설정되었는지는 거의 중요하지 않습니다.
(이 변수가 중요한 상황을 한 번도 경험해 본 적이 없습니다)
논의의 여지가 있지만, 기본 포트는 2525로 설정하거나, 대부분의 VM이 SMTP 포트를 차단하며 대부분의 SMTP 서비스가 2525 포트에서 허용된다는 점을 사용자에게 안내하는 것이 좋을 것입니다(하지만 이렇게 설명하면 말이 너무 길어지죠).
Digital Ocean이 포트 587을 차단한다는 사실은 좋은 관행에 근거하지 않은 끔찍하고 무지한 결정입니다.
같은 이유로 2525 포트도 기본적으로 차단하기 시작하지 않은 것이 오히려 놀랍습니다.
저도 동의합니다. Digital Ocean만이 그렇게 하는 것이 아닐 것이라고 확신합니다(다만 이를 뒷받침할 근거를 찾는 데 어려움을 겪고 있습니다). 이상한 점은, 그들은 항상 일종의 그런 조치를 취해왔지만, 지난 4월(?)에 비로소 모든 사용자에게 이를 강제하기 시작했다는 것입니다. 하지만 여기서 말하는 "모든 사용자"란 실제로는 "다음 재부팅 이후의 모든 사용자"와 매우 유사한 개념입니다(재부팅이 필요한 다른 어떤 요소에 달려 있을 수도 있으므로), 따라서 재부팅(또는 드롭릿 리사이즈 등)이 이루어지기까지 몇 달이 걸릴 수 있으며, 그때부터 이런 문제가 발생하기 시작할 수 있습니다.
게다가 그들은 SMTP 서비스를 제공하지도 않기 때문에, 2525 포트까지 차단되면 메일을 보낼 수 있는 방법이 전혀 남지 않게 됩니다. CDCK가 처음부터 Digital Ocean을 추천해 왔기 때문에(아니면 적어도 제가 사용하기 시작한 시점부터) Digital Ocean을 사용하는 사람들이 많습니다.
이 사실을 어떻게 발견하셨나요? emails:test rake 작업을 실행해 보셨나요? 만약 실행하셨다면 도움이 되셨나요? 이 작업의 존재를 알고 계셨나요?
Michael, 감사합니다. 오늘 설치 과정에서 실제로 일어난 일과 포트 587이 근본적인 원인임을 어떻게 파악했는지 설명드리겠습니다.
50:30에 처음 ./discourse-doctor를 실행했을 때, 587 포트의 대외 SMTP가 실패하는 것이 명확하게 표시되었습니다. 해당 과정의 어디에도 성공적인 테스트 이메일이 없었습니다. 이로 인해 51:38에 SMTP 포트를 2525로 변경하고 컨테이너를 다시 빌드했습니다. 앱이 다시 시작되자마자 57:46의 첫 번째 메일 테스트가 즉시 성공했습니다.
57:58에 제 Mailgun 계정이 아직 활성화되지 않았다는 점을 확인했습니다. 따라서 doctor가 SMTP 실패가 인증 정보 때문이 아니라 DigitalOcean에 의해 포트가 차단되었기 때문이라고 한 것이 정확했습니다.
Brevo가 설정이 더 빠르기 때문에 제공업체를 변경했습니다: 58:40에 설정을 시작하고, 1:01:12에 무료 플랜을 선택했으며, 1:02:29에 DNS 레코드를 교체하고, 1:04:37에 app.yml의 SMTP 설정을 업데이트했습니다. 1:06:08에서 ./discourse-setup으로 변수가 설정되지 않았음에도 GUI에 DISCOURSE_SMTP_DOMAIN이 표시된다는 점을 지적했는데, 이것이 초기에 빈 필드를 보고 설정 오류가 있다고 생각했던 이유입니다.
Brevo 구성을 완료한 후 1:42:10에 ./discourse-doctor를 다시 실행했고, 1:42:25에 성공적인 대외 이메일 전송이 확인되었습니다. 이번에도 포트 2525를 사용했습니다.
질문하신 사항에 대해 답변드립니다:
다시 한번 감사합니다. DISCOURSE_SMTP_DOMAIN이 실제로 영향을 미치는 부분(EHLO만)에 대한 설명 덕분에 누락된 값이 중요하지 않은 이유를 명확히 이해할 수 있었습니다.