Mailgun API 키가 정의되지 않았다는 불평을 하는 사이트들이 꽤 있는 것 같네요. 하지만 (최소한 대부분의) 해당 사이트들은 mail-receiver 컨테이너를 통해 회신을 받고 있으며, 이 컨테이너가 바운스(수신 불가 메일)를 처리하므로 API 키(그리고 Mailgun의 해당 웹훅)가 필수적일 필요가 없습니다. 스펙(그리고 따라서 코드)의 로직이 뒤집혀 있는 것 같습니다:
은 다음과 같이 보입니다:
context "when using Mailgun without an API key" do
let(:replies_enabled) { true }
let(:mailgun_address) { "smtp.mailgun.org" }
let(:api_key) { nil }
it do
expect(check).to have_a_problem.with_priority("low").with_message(
"The server is configured to send emails via Mailgun but you haven't provided an API key used to verify the webhook messages.",
)
end
```\n이 코드는 회신(replies)이 활성화된 경우를 경고하지만, 그 경우 우리는 **필요하지** 않은 웹훅을 다루고 있습니다.
그리고
context "when replies are disabled" do
let(:replies_enabled) { false }
let(:mailgun_address) { anything }
let(:api_key) { anything }
it { expect(check).to be_chill_about_it }
end
여기서는 mail receiver를 사용하여 바운스를 처리하지 **않고** 있으며, 그 상태로 아무 문제가 없다고 보고 있습니다.
제가 헷갈리고 있는 건가요, 아니면 이 로직이 뒤집혀 있는 건가요?
음, 아마 제가 헷갈리고 있는 것일 수도 있습니다. mail receiver가 Discourse에 바운스에 대해 통보하지 않는 것처럼 보이거든요. 트래픽이 많은 사이트에는 최근 바운스된 메시지가 없습니다.
하지만:
[quote="Discourse, post:1, topic:49487"]
이메일이 "바운스"(어떤 이유로든 전달되지 못하는 경우)되면, 그것을 알아야 합니다. 반복적으로 바운스되는 이메일을 보내면 해당 이메일이 스팸으로 분류될 수 있습니다. 이메일 바운스를 수신하면 존재하지 않는 주소로의 전송을 비활성화할 수 있습니다.
[/quote]
그리고:
[quote="Régis Hanol, post:1, topic:45343, username:zogstrip"]
VERP를 활성화하려면, <kbd>+</kbd> 기호를 사용하는 이메일 주소 템플릿으로 "`reply by email address`" 사이트 설정을 설정하십시오. 기본값인
`replies+%{reply_key}@discourse.example.com`
… 은 잘 작동합니다. 자신의 회사 또는 개인 이메일 서버를 사용하는 경우, 이것이 전부입니다 :tada:
Discourse 인스턴스는 이 주소로 보내진 이메일을 수신할 수 있어야 합니다. 이는 POP를 통해 작동해야 하지만, [자체 호스팅 사이트를 위한 직접 전달 수신 이메일](https://meta.discourse.org/t/straightforward-direct-delivery-incoming-mail/49487)을 강력히 권장합니다.
[/quote]
즉, 이 문서에는 작동하는 mail receiver가 있다면 이 문제를 처리해야 한다고 시사하고 있습니다. 또한 제가 과거에 내부 도구 중 일부에서 이러한 웹훅을 설정할 때 작성했던 코드에는 "# mail receiver가 있으면 웹훅이 필요하지 않다"는 주석이 있었습니다.

