Discourse + DigitalOcean + Mailjet 설정

이것은 버그가 아닙니다. Discourse는 필요한 것을 요구하며, 필요한 리소스가 사용 가능하지 않으면 설치할 수 없습니다.

여기서 가장 필요한 “재조정”은, Discourse 설치 배포를 위한 새로운, 더 비싼 현실에 적응해야 한다는 것입니다.

비용을 절약하려면, 명령 프롬프트에서 상당한 기술적 작업을 수행하여 환경을 설정해야 합니다. 이를 통해 더 저렴한 가격대의 Droplet 옵션으로 Discourse가 올바르게 설치될 수 있도록 해야 합니다.

이 문제를 개선하기 위해 변경 사항이 적용되었을 것으로 생각합니다:

제안을 따라 $6짜리 Droplet에 Discourse를 성공적으로 설치했습니다.

하지만 현재 가장 큰 문제는 Mailjet을 제대로 연결하지 못해서 설정 과정의 “이메일 확인” 단계를 넘어서지 못하는 것입니다.

Mailjet 설정을 성공적으로 완료할 때까지 이 단계를 우회할 수 있는 방법이 있을까요? 아니면 먼저 Mailjet 설정을 해결해야 하나요?

(문제는 Mailjet 설정이 왜 실패하는지 확인할 방법이 없다는 것입니다. SPF/DKIM 등 필요한 설정을 모두 추가했지만 여전히 작동하지 않습니다. 분명 뭔가 잘못되었겠지만, 그게 무엇인지에 대한 어떤 안내도 없습니다.)

보내는 주소가 Mailjet에 설정된 주소와 일치하나요? 다른 주소로는 이메일을 보낼 수 없으며, 이는 매우 흔한 실수입니다.

Mailjet에서 발신자 주소(Sender Address)를 사용하지 않습니다. 대신 **발신 도메인(Sender Domain)**을 사용하며, 이를 통해 noreply@mydomain.com과 같이 실제로 존재하지 않는 엔티티를 사용할 수 있습니다.

이 도메인에는 기술적으로 이메일 계정이 존재하지 않기 때문에(디지털오션(DigitalOcean)에서 이를 합리적으로 설정할 수 없기 때문) 발신자 주소를 사용할 수 없습니다.

만약 발신자 주소를 사용하게 된다면, 도메인과 일치하지 않아 Discourse(또는 WordPress)의 트랜잭션 이메일에 사용할 수 없습니다.

보너스 질문: 루트 도메인과 별도로 서브도메인(forum.mydomain.com)을 발신 도메인으로 추가해야 하나요?

발신자란 Discourse가 전송에 사용하는 주소, 즉 "알림 이메일 주소"를 의미합니다.

새로운 Discourse 설치에서 이메일 문제 해결을 참고해 주세요.

이 코멘트를 이해하지 못하겠습니다. (노력하고 있으니, 좀만 기다려 주세요!)

제 3단계는 SMTP 서버에 연결을 열어서 완료할 수 있었기 때문에, 모든 것이 적절하게 구성될 수 있다고 이해하고 있습니다…

하지만 이 부분은 명확하지 않습니다:

발신자 주소(Sender Address)가 필요한가요? 제 도메인과는 다르므로, 이것이 제 트랜잭션 이메일 문제와 어떤 관련이 있는지 이해가 되지 않습니다. 저는 Discourse를 noreply@mydomain.com(또는 noreply@forum.mydomain.com일 수도 있으니 확인이 필요합니다)을 사용하도록 설정했기 때문에, 적어도 제가 이 개념들을 이해하는 범위에서는 *발신 도메인(Sender Domain)*으로 커버되어야 할 것 같습니다.

(여기서 발신자 주소(Sender Address)나 발신 도메인(Sender Domain)이라고 할 때, 이는 Discourse가 아니라 Mailjet 백엔드 내에서 정의된 값을 의미합니다.)

저는 도메인 그리고 구체적인 발신자 주소를 모두 정의해 두었습니다. 이 설정을 한 지 몇 달이 지났지만, 발신자 도메인만 정의했을 때 문제가 발생했던 것 같습니다. 구체적인 발신자 주소를 확인할 수 있게 되자 잘 작동했습니다.

이메일을 보내는 경우, from: 헤더에 주소가 포함되어 있습니다. Discourse가 해당 위치에 넣는 주소가 메일 서버에서 해당 주소를 통해 메일을 전달할 수 있는 주소인지 확인해야 합니다.

이것은 메일 서비스에 따라 달라질 수 있으며, Mailjet에 대해서는 잘 모르겠습니다.

도메인 등록업체를 통해 메일 서비스용 서브도메인(예: mail.domain.com)을 설정할 수 있습니다.

루트 도메인 또는 서브도메인의 별칭(aliases)으로 이메일을 보내고자 하는지에 따라 달라집니다.

포럼이 위치한 DNS 주소와는 아무런 관련이 없습니다. 발신 주소 필드에 포함된 도메인은 Mailjet에 설정된 도메인과 일치해야 합니다.

하지만 새로운 이메일 주소(예: x@mydomain.com)를 정의할 수 없다면, 이 작업을 어떻게 완료할 수 있을까요?

도메인이 없는 이메일 주소를 사용할 수는 있지만, 제 이해가 맞다면 Discourse는 도메인 기반 주소에서만 트랜잭션 이메일을 보내게 됩니다.

정리를 위해: 저는 실제로 발신자로 도메인 기반 이메일 주소를 지정했습니다(Discourse 내부, 구체적으로는 app.yml 파일 또는 해당 파일에서). 그러나 [1] 제 이해로는 Sender Address는 동일한 도메인을 공유하지 않는 주소를 위한 것이기 때문에 Mailjet에 이를 Sender Address로 추가하지 않았고, [2] 메일 서버를 직접 운영하지 않고 있기 때문에 도메인 기반 이메일 주소를 생성할 수 없습니다(제 이해로는 Mailjet의 핵심은 자체 메일 서버를 설정하고 운영할 필요가 없도록 하는 것이며, 이는 전달률 측면에서 매우 신뢰할 수 없을 것이기 때문입니다).

이 글들은 이메일 설정 문제와 관련이 있고, 기본 최소 요구사항보다는 그쪽에 더 가까워 보였기 때문에, 최신 게시글들을 이 토픽으로 옮겼습니다. :+1:

현재 질문자의 핵심 질문이 무엇인지 이해하기 어렵지만, 발신 주소가 동일한 도메인을 공유하지 않는 주소를 위한 것이라는 설명은 정확하지 않다고 생각합니다. 저는 Discourse 사이트가 호스팅되는 도메인과 동일한 도메인을 가진 발신 주소를 구성한 적이 있으며, 이는 수신 메일도 처리할 수 있지만, 이는 Mailjet이 아닌 다른 플랫폼에서 진행한 것입니다.

Jay에게 한 질문으로 돌아가 보겠습니다: 새로운 주소를 정의할 수 없다면, "Discourse가 발신 주소로 나열한 주소가 메일 서버가 메일을 전달하도록 설정된 주소임을 확인해야 합니다"라는 "이것"을 어떻게 완료할 수 있을까요?

따라서 이에 대한 답은 다음과 같을 것입니다: 불가능합니다.

결국 모든 정보가 정상이었으나, 다른 도메인에서 온 관리자 이메일 주소(제가 관리하지 않는 주소)는 이메일이 발송된 후 수 시간 뒤에야 도착했습니다.

(관리자 이메일 주소 목록에 제 이메일 주소를 추가했을 때, 인증 이메일은 즉시 도착했습니다.)

Discourse에서 트랜잭션 이메일이 정상적으로 작동하도록 하려면 두 번째 발신 도메인(서브도메인)과 그에 따른 DNS 레코드를 추가해야 했습니다.