수신 이메일 및 새 주제 이메일의 직접 전달 설정 방법

이메일을 통한 답변 및 이메일로 새 게시글을 생성하는 설정을 시도하고 있습니다. 도움이 매우 필요하겠습니다.

아래 가이드를 참고하여 self-hosted Discourse 포럼에서 mail-receiver 컨테이너를 설정했고, 오류 없이 부트스트랩에 성공했습니다.

https://meta.discourse.org/t/configure-direct-delivery-incoming-email-for-self-hosted-sites-with-mail-receiver/49487

https://meta.discourse.org/t/configure-incoming-email-to-create-new-topics-or-group-messages/62977

도메인으로 이메일은 수신되고 있지만, 내 이메일이 API 키에 의해 거부되는 것으로 보입니다.

API 키 설정을 위해 이 가이드를 사용했습니다: Where do I put the variables for mail-receiver? - #4 by Simon_Manning

수신 이메일용 시스템 스코프의 API 키를 구성했으며, 기본값은 다음과 같습니다:

  • /admin/email/smtp_should_reject (GET)
  • /admin/email/handle_mail (POST)

다음은 mail-receiver 로그의 내용 예시입니다:

 mail-qt1-f182.google.com[209.85.160.182]
<19>Jun  3 12:22:56 discourse-smtp-fast-rejection[114]: Failed to GET smtp_should_reject answer from thetarotclub.xyz/admin/email/smtp_should_reject.json: undefined method `request_uri' for #<URI::Generic:0x00005a643e1ea198> (NoMethodError)<19>Jun  3 12:22:56 discourse-smtp-fast-rejection[114]:   /usr/local/lib/site_ruby/mail_receiver/fast_rejection.rb:78:in `maybe_reject_email'
  /usr/local/lib/site_ruby/mail_receiver/fast_rejection.rb:142:in `maybe_reject_by_api'
  /usr/local/lib/site_ruby/mail_receiver/fast_rejection.rb:116:in `block in run_filters'
  /usr/local/lib/site_ruby/mail_receiver/fast_rejection.rb:115:in `each'
  /usr/local/lib/site_ruby/mail_receiver/fast_rejection.rb:115:in `run_filters'
  /usr/local/lib/site_ruby/mail_receiver/fast_rejection.rb:60:in `process_single_request'
  /usr/local/lib/site_ruby/mail_receiver/fast_rejection.rb:34:in `process'
  /usr/local/bin/discourse-smtp-fast-rejection:10:in `<main>'Jun 03 12:22:56 ubuntu-2gb-ash-1-mail-receiver postfix/smtpd[108]: NOQUEUE: reject: RCPT from mail-qt1-f182.google.com[209.85.160.182]: 450 4.7.1 <replies+772ea5167ee1fabce20db67cd141a364@thetarotclub.xyz>: Recipient address rejected: Internal error, API request preparation failed; from=<cheseldm@gmail.com> to=<replies+772ea5167ee1fabce20db67cd141a364@thetarotclub.xyz> proto=ESMTP helo=<mail-qt1-f182.google.com>
Jun 03 12:22:56 ubuntu-2gb-ash-1-mail-receiver postfix/smtpd[108]: disconnect from mail-qt1-f182.google.com[209.85.160.182] ehlo=1 mail=1 rcpt=0/1 bdat=0/1 quit=1 commands=3/5
Jun 03 12:26:16 ubuntu-2gb-ash-1-mail-receiver postfix/anvil[111]: statistics: max connection rate 1/60s for (smtp:209.85.160.182) at Jun  3 12:22:56
Jun 03 12:26:16 ubuntu-2gb-ash-1-mail-receiver postfix/anvil[111]: statistics: max connection count 1 for (smtp:209.85.160.182) at Jun  3 12:22:56
Jun 03 12:26:16 ubuntu-2gb-ash-1-mail-receiver postfix/anvil[111]: statistics: max cache size 1 at Jun  3 12:22:56
Jun 03 12:43:23 ubuntu-2gb-ash-1-mail-receiver postfix/smtpd[127]: connect from mail-qt1-f176.google.com[209.85.160.176]

또한 mail-receiver 로그의 끝부분에는 다음과 같이 표시됩니다:

Operating environment:
HOSTNAME=ubuntu-2gb-ash-1-mail-receiver
LANGUAGE=en_US.UTF-8
MAIL_DOMAIN=thetarotclub.xyz
DOCKER_HOST_IP=172.17.0.1
PWD=/
DISCOURSE_BASE_URL=thetarotclub.xyz
HOME=/root
LANG=en_US.UTF-8
TERM=xterm
SHLVL=1
DISCOURSE_API_USERNAME=system
LC_ALL=en_US.UTF-8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
DISCOURSE_API_KEY=
_=/usr/bin/env
Delivering mail sent to thetarotclub.xyz to Discourse
postfix/postfix-script: warning: symlink leaves directory: /etc/postfix/./makedefs.out
Jun 03 21:34:36 ubuntu-2gb-ash-1-mail-receiver postfix/postfix-script[85]: warning: symlink leaves directory: /etc/postfix/./makedefs.out
Starting Postfix
Jun 03 21:34:36 ubuntu-2gb-ash-1-mail-receiver postfix/master[1]: daemon started -- version 3.5.6, configuration /etc/postfix

Discourse API 키는 제가 /var/discourse/containers/mail-receiver.yml에서 설정한 것이 아닙니다.

다음은 제 mail-receiver.yml 파일입니다:

## this is the incoming mail receiver container template
##
## After making changes to this file, you MUST rebuild
## /var/discourse/launcher rebuild mail-receiver
##
## BE *VERY* CAREFUL WHEN EDITING!
## YAML FILES ARE SUPER SUPER SENSITIVE TO MISTAKES IN WHITESPACE OR ALIGNMENT!
## visit http://www.yamllint.com/ to validate this file as needed

base_image: discourse/mail-receiver:release
update_pups: false

expose:
  - "25:25"   # SMTP

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8

  ## Where e-mail to your forum should be sent.  In general, it's perfectly fine
  ## to use the same domain as the forum itself here.
  MAIL_DOMAIN: thetarotclub.xyz
# uncomment these (and the volume below!) to support TLS 
#  POSTCONF_smtpd_tls_key_file:  /letsencrypt/discourse.example.com/discourse.example.com.key
#  POSTCONF_smtpd_tls_cert_file:  /letsencrypt/discourse.example.com/fullchain.cer
#  POSTCONF_smtpd_tls_security_level: may


  ## The base URL for this Discourse instance.
  ## This will be whatever your Discourse site URL is. For example,
  ## https://discourse.example.com. If you're running a subfolder setup,
  ## be sure to account for that (ie https://example.com/forum).
  DISCOURSE_BASE_URL: 'https://thetarotclub.xyz'

  ## The master API key of your Discourse forum.  You can get this from
  ## the "API" tab of your admin panel.
 DISCOURSE_API_KEY: 
  ## The username to use for processing incoming e-mail.  Unless you have
  ## renamed the `system` user, you should leave this as-is.
  DISCOURSE_API_USERNAME: system

volumes:
  - volume:
      host: /var/discourse/shared/mail-receiver/postfix-spool
      guest: /var/spool/postfix
# uncomment to support TLS
#  - volume:
#      host: /var/discourse/shared/standalone/letsencrypt
#      guest: /letsencrypt

거부된 이메일에서 발생하는 오류는 다음과 같습니다:

450 4.7.1 : Recipient address rejected: Internal error, API request preparation failed

방금 키를 공개했으므로 해당 키를 무효화한 후 새로운 키를 생성해야 합니다. 키에 최소한 메일 전달 권한이 있는지 확인하세요.

컨테이너가 재빌드되지 않는다는 것을 파악했습니다. 재빌드를 진행한 후, 컨테이너에 올바른 API 키가 업데이트되었습니다. 이제 이메일이 정상적으로 수신되고 있습니다.

감사합니다.

좋습니다! 첫 번째 게시글에 키를 포함시켰으니, 새 키를 생성했겠군요?

좋습니다! 확실하게 확인하고 싶었을 뿐입니다.

네. 기존 키는 폐기되고 새로운 키가 생성되었습니다.