이것은 초기 설치용이고, 저는 DNS 전문가와는 거리가 멉니다! 현재 제 상황은 다음과 같습니다:
발신 이메일 테스트는 정상적으로 작동하고 있습니다. MailGun을 사용 중이며, 권장하는 “mg” 서브도메인을 사용하고 있습니다. 포트 2525로 전송하고 있습니다. 설정의 해당 필드에 웹훅용 MailGun API를 입력해 두었습니다 (API가 세 개나 있더라고요—이게 맞는 건가요??). 또한 DNS 설정에 mg 서브도메인용 MX 레코드도 입력해 두었습니다. MailGun의 검증 체크와 mail-tester.com 모두 정상적으로 작동한다고 표시되고 있습니다.
수신은 "inbound"라는 서브도메인으로 설정되어 있습니다. Gmail 계정에서 fake@inbound.[mydomain].org로 이메일을 보내면, 해당 이메일이 mail-receiver 로그에 도착하는 것을 확인할 수 있습니다. 그러나 Discourse의 설정 > 이메일을 통해 같은 주소로 테스트 이메일을 보내면, 이메일이 사라지는 것 같습니다—거절함(Rejected)에도 아무것도 표시되지 않습니다. 나머지는 Straightforward direct-delivery incoming mail을 사용했습니다.
설치 과정에서 제가 저지른 다른 실수들 때문에, 처음부터 다시 시작하기로 결정했습니다: 드롭렛을 삭제하고 Discourse를 재설치했으며, 모든 것을 처음부터 다시 진행 중입니다. 다만, MailGun 계정은 삭제하지 않았고, 실제로는 이전과 동일한 API 웹훅을 사용 중입니다. 이것이 문제가 될 수 있을까요? 하지만 저는 새로운 Discourse에서 생성된 API 키는 사용하고 있습니다 (구 키는 당연히 드롭렛을 삭제하면서 사라졌으니까요).
생각할 수 있는 다른 가능성은 mail-receiver.yml의 엔드포인트일 것입니다. 제 설정은 다음과 같습니다: DISCOURSE_MAIL_ENDPOINT: 'https://inbound.[mydomain].org/admin/email/handle_mail'
어디에 문제가 있는지 의견이 있을까요? (더 큰 문제는, 얼마 전까지 드롭렛을 삭제하기 전에는 모든 것이 정상적으로 작동하고 있었다는 점입니다. 저는 apparently 천천히 배우는 것 같습니다 ). 모두 감사합니다!
그리고… 이것은 메일건(Mailgun)과는 무관합니다. 다만 메일건이 도메인에 MX 레코드를 추가하라고 지시하는 것은 무시해야 합니다. 아래 내용 참조:
참고: 메일건과 같은 발신 이메일 제공업체는 서버로 가리키는 MX 레코드를 추가하라고 요청할 수 있습니다. 포럼의 MX 레코드가 포럼 도메인 이름만 가리키도록 이러한 레코드를 제거해야 합니다. 이메일을 보낼 수 있도록 SPF와 DKIM 레코드는 여전히 발신 이메일 제공업체 서버를 가리켜야 합니다.
@tobiaseigen 점점 가까워지고 있어요! 엔드포인트에서 수신 메일 서브도메인을 제거하여 변경을 했습니다. 저장한 후 메일 리시버를 재시작했습니다(제가 뭘 하고 있는지 잘 모르기 때문에요!). 테스트를 해봤지만, 여전히 작동하지 않습니다. 그러다 앱 전체를 다시 빌드했습니다. 그다음 서로 다른 이메일 주소를 사용하여 두 개의 새 계정을 만들었습니다. 그리고 관리자 계정으로 이 계정 중 하나에게 PM(개인 메시지)을 보냈습니다. 예상대로 이메일이 생성되었습니다. 그런 다음 이메일로 해당 PM에 회신했습니다. 메일 로그에 나타난 결과는 다음과 같습니다:
설명해 드릴게요 단순화를 위해 제 도메인을 thesite.org라고 가정하겠습니다. 메일 수신 로그에서 SSL 문제를 발견했습니다: <19>Nov 25 19:11:29 receive-mail[160]: Failed to POST the e-mail to https://inbound.thesite.org/admin/email/handle_mail: hostname "inbound.thesite.org" does not match the server certificate (OpenSSL::SSL::SSLError)
질문에 답하자면, 제가 추구했던 두 가지 목표는 매우 흔한 것들이라고 생각합니다:
admin@thesite.org가 관리자에게 연락하기 위한 주소가 됩니다.
thesite.org가 포럼을 시작합니다 (서브도메인 없음).
현재 제 Namecheap DNS 설정은 다음과 같습니다 (TTL = Auto, Priority = 10):
제 containers/mail-receiver.yml 설정은 다음과 같습니다:: MAIL_DOMAIN: inbound.thesite.org DISCOURSE_MAIL_ENDPOINT: 'https://thesite.org/admin/email/handle_mail' DISCOURSE_API_KEY: (stuff) DISCOURSE_API_USERNAME: system ← API 키와 동일
* 참고—> LetsEncrypt 줄은 그대로 두었습니다 ("#"를 제거하지 않음)
메일 컨테이너와 앱 컨테이너를 모두 다시 빌드했나요? 메일 수신기에 인증서를 부여하려는 부분을 제거하는 것이 쉬운 해결책이라고 생각합니다. 해당 인증서가 사이트에서 정상적으로 작동하나요?
Discourse 사이트가 inbound.thesite.org에 있지 않다면 그것이 문제입니다. 핵심 아이디어는 Discourse 사이트와 메일 수신기의 호스트명이 동일해야 한다는 것입니다. 이를 수정하려면 여러 도메인으로 Let’s Encrypt 설정하기 문서를 찾아보셔야 합니다.
이것은 mail-receiver howto의 의도된 범위를 상당히 벗어난 내용입니다. 이 정보만으로는 해결 방향을 잡기 어렵고 예산이 있다면 편하게 저에게 연락해 주세요.
그렇다면 질문은 다음과 같이 바뀌게 됩니다. 위에서 정의한 두 가지 목표 모두를 달성할 수 있을까요(이 두 가지는 매우 흔해 보입니다)? www.thesite.org와/또는 thesite.org를 입력한 방문자를 subdomain.thesite.org로 리디렉션하는 것이 유일한 대안일까요? 만약 그렇다면, 대외용 이메일 주소를 admin@subdomain.thesite.org처럼 보기 싫은 것으로 바꿔야 할 것 같습니다.
절대적으로 필요하다고 판단되면 관리자 이메일 주소를 바꾸는 것은 감수할 수 있습니다. 뭔가 뻔한 것을 놓치고 있는 것 같은데, 아마 제가 완전히 엉뚱한 방향으로 생각하고 있는 것 같습니다(아마도 그럴 것입니다!).
@pfaffman 정말 천재세요! 성공했어요!! 여러 도메인으로 Let’s Encrypt 설정하기 가이드를 따라 디스코스를 다시 빌드한 후 메일 리시버를 다시 빌드했는데(이 두 작업 중 하나는 불필요했을 수도 있지만), 이렇게 해결되었습니다. 성공!
오늘 저녁에 “직접 전달되는 수신 메일 설정” 원본 게시글을 구글 문서에 복사/붙여넣어서 제 수정 제안들을 공유하고 싶습니다. 여러분께 잘못이 있는 것은 아니지만, 저는 명령줄에 익숙하지 않은 사람이라 원본 게시글 중 직관적으로 이해하기 어려운 부분이 몇 있습니다. 위에서 제가 정의한 두 가지 목표는 많은 설치 환경에서 매우 일반적인 것들이라고 생각하며, 이제 최종 목표를 달성할 수 있다는 것을 알게 되었습니다.
전체 설정 튜토리얼에 대한 다른 제안들도 있습니다. 프로세스를 최대한 단순화하기 위한 수정 제안들을 계속 목록으로 작성하고 있습니다.