여러분, 안녕하세요. 이 블로그 포스트를 우연히 발견했는데 How Does Team Discourse Use Discourse? , 이 부분이 제 눈에 확 들어왔어요:
누구나 team@discourse.org로 이메일을 보낼 수 있으며, 우리는 이러한 상호작용을 중앙 Discourse 메일박스에서 개인 그룹 메시지로 처리합니다.
이걸 어떻게 설정하신 건가요? 저는 steering@somervilleyimby.org에 대해 이 방식을 적용하고 싶습니다 (현재 Google Group을 사용 중인데 꽤 불편하거든요). somervilleyimby.org로 수신 및 발송되는 이메일에는 Google Apps를 사용하고, Discourse 이메일(예: jeff@somervilleyimby.org ; discourse.somervilleyimby.org을 통해 송수신됨) 처리에는 Mailgun을 사용 중이라, 이걸 어떻게 설정해야 할지 조금 막막합니다.
추천 사항이나 HOWTO가 있을까요? Configuring incoming email to create new topics or group messages 포스트를 발견했지만, 그건 부분적으로만 해결해 줍니다.
HAWK
(Hawk)
1월 12, 2023, 9:53오후
2
아, 좋네요! 좋은 글이네요. 다만 제가 놓치고 있는 핵심적인 부분을 명확히 해주지는 못합니다:
steering@somervilleyimby.org를 Discourse의 그룹(Group)으로 연결하려면 어떻게 해야 하나요?
현재 somervilleyimby.org 도메인은 Google Apps 이메일에 매핑되어 있으며, 다음 두 개의 주소를 보유하고 있습니다:
Discourse의 수신 및 발신 이메일은 discourse.somervilleyimby.org를 통해 Mailgun을 사용하여 처리되며, 설정은 잘 되어 있습니다.
하지만 메인 도메인의 이메일 주소를 Discourse 내부의 그룹이 수신하도록 매핑하는 방법은 무엇일까요?
이것이 Discourse 자체의 범위를 벗어난 문제일 수 있다는 점은 알고 있지만, 혹시 아이디어를 가진 분이 있을까 해서 질문해 봅니다. person@discourse.org와 같은 개인 주소와 동시에, Team Discourse 인스턴스 내부로 전달되는 공유 주소인 team@discourse.org도 존재할 것이라고 추측하고 있습니다.
hosch
(Holger Schmermbeck)
1월 14, 2023, 6:26오후
4
그것도 생각은 해봤는데, 정확히 어떻게 연결해야 할지 아직 고민 중이야
Jeff님, 안녕하세요
제가 정확히 이해하고 있는지 100% 확신은 없지만, 제 셀프호스팅 사이트에서는 mail-receiver 플러그인을 사용하여 수신 이메일을 처리하고 있습니다. 관리자 설정에서 이메일 입력(email-in)을 활성화한 후, 특정 그룹 또는 카테고리 설정에 이메일 주소를 지정하여 원하는 위치에 메시지가 전달되도록 설정하고 있습니다.
이 정보가 도움이 될까요?
Stephen
(Stephen)
1월 14, 2023, 8:37오후
7
다만 메일 수신기의 문제는 단일 도메인만 처리한다는 점입니다.
Jeff는 현재 인스턴스에 서브도메인을 사용하면서, 루트 도메인의 메일박스도 함께 처리되기를 원하고 있습니다.
pfaffman
(Jay Pfaffman)
1월 15, 2023, 11:14오전
8
따라서 그는 메일 수신기를 다른 서브도메인에 설정한 후, 실제 도메인에서 discourse 도메인으로 메일을 전달해야 합니다. (이 부분은 별도의 주제로 분리되어야 합니다)
모두 감사합니다. 이 문제를 별도의 주제로 분리해 주셔서 특히 감사드립니다.
@JammyDodger 그 방법은 확실히 문제를 해결할 것 같네요. 그리고 @pfaffman 도 도메인 + 서브도메인 구성을 어떻게 처리해야 하는지에 대해 정확히 짚어 주셨네요.
혹시 궁금하신 분들을 위해 말씀드리면, 서브도메인은 도메인의 이메일을 다른 엔티티(우리의 경우 Google Apps)가 처리하고 있을 때 Mailgun이 권장하는 모범 사례입니다.
요약하자면, 이메일은 여전히 매우 어렵습니다.
결국 Gmail의 라우팅 규칙을 사용해 이메일을 steering@discourse.somervilleyimby.org로 재라우팅할 수 있다는 걸 알게 되었어요. 그러면 Mailgun이 해당 이메일을 제 Mailgun 플러그인의 엔드포인트 /mailgun/incoming으로 POST 요청을 보내는데, 422 Unprocessable Entity 에러가 발생하네요
플러그인 코드를 좀 더 깊이 파고들어야겠어요…
pfaffman
(Jay Pfaffman)
1월 18, 2023, 5:45오후
11
포럼 서브도메인의 메일 수신에 Mailgun을 사용하지 않는 경우, Mailgun의 MX 레코드를 삭제하고 자체 호스팅 사이트를 위한 직접 전달 수신 이메일 구성 을 사용하세요.
그래서 저는 Mailgun을 사용하는데, 이게 확실히 상황을 복잡하게 만듭니다. 하지만 어쨌든 제 스스로 이메일을 직접 관리하고 싶지는 않거든요. 어차피 관리 업무를 처리하는 건 저 혼자이니까요.
그래도 여러분 덕분에 올바른 방향으로 안내받았습니다!
/me 한숨을 쉰다
물론, Discourse 3.x로 업그레이드하면서 Mailgun 플러그인을 통한 수신 이메일이 완전히 깨지는 것처럼 보인다면 이 모든 것이 훨씬 덜 복잡했을 텐데
내가 확인하는 오류
로그에서:
# env tab
hostname discourse-app
process_id 9406
application_version 3030a538192252c9d29e4fb763d31810327f370a
HTTP_HOST discourse.somervilleyimby.org
REQUEST_URI /mailgun/incoming
REQUEST_METHOD POST
HTTP_USER_AGENT Go-http-client/2.0
HTTP_ACCEPT */*
HTTP_X_FORWARDED_FOR <redacted>
HTTP_X_REAL_IP <redacted>
time 2:59 pm
# info
Message (27 copies reported)
ActionController::InvalidAuthenticityToken (Can't verify CSRF token authenticity.)
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:366:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'
Backtrace
actionpack (7.0.3.1) lib/action_controller/metal/request_forgery_protection.rb:251:in `handle_unverified_request'
actionpack (7.0.3.1) lib/action_controller/metal/request_forgery_protection.rb:284:in `handle_unverified_request'
actionpack (7.0.3.1) lib/action_controller/metal/request_forgery_protection.rb:273:in `verify_authenticity_token'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:400:in `block in make_lambda'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:199:in `block (2 levels) in halting'
actionpack (7.0.3.1) lib/abstract_controller/callbacks.rb:34:in `block (2 levels) in <module:Callbacks>'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:200:in `block in halting'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:595:in `block in invoke_before'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:595:in `each'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:595:in `invoke_before'
Env
HTTP HOSTS: discourse.somervilleyimby.org
# backtrace
Message (26 copies reported)
ActionController::InvalidAuthenticityToken (Can't verify CSRF token authenticity.)
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:366:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'
Backtrace
actionpack (7.0.3.1) lib/action_controller/metal/request_forgery_protection.rb:251:in `handle_unverified_request'
actionpack (7.0.3.1) lib/action_controller/metal/request_forgery_protection.rb:284:in `handle_unverified_request'
actionpack (7.0.3.1) lib/action_controller/metal/request_forgery_protection.rb:273:in `verify_authenticity_token'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:400:in `block in make_lambda'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:199:in `block (2 levels) in halting'
actionpack (7.0.3.1) lib/abstract_controller/callbacks.rb:34:in `block (2 levels) in <module:Callbacks>'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:200:in `block in halting'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:595:in `block in invoke_before'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:595:in `each'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:595:in `invoke_before'
Env
HTTP HOSTS: discourse.somervilleyimby.org
비슷한 문제에 대한 다른 보고가 있는지 확인하러 가볼게요. 하지만 혹시 아이디어가 있으신 분들이 있다면 환영합니다!
찾았어요! 네, 좋습니다. 먼저 Discourse v3.x 업그레이드와 오래된 Mailgun 플러그인이 문제를 일으켰네요.
아무튼, 방법은 다음과 같습니다:
수신할 이메일 주소 또는 정규식 패턴에 대해 Mailgun 수신 경로 를 설정합니다.
Google Admin에 접속합니다.
왼쪽 탐색창에서 “Apps”를 펼친 다음 “Google Workspace”를 선택하고 “Gmail” 을 클릭합니다(이 링크가 작동할까요?).
기본 라우팅 을 클릭합니다.
메일건(Mailgun) 기반 서브도메인으로 주 도메인의 주소 또는 패턴을 매핑하는 경로를 생성합니다: