최근에 Discourse를 AWS에서 DO로 마이그레이션했습니다. Migrate from AWS to Digital Ocean with 2 containers, spaces and 2 CDNs - #3 by dfriestedt . 모든 것이 잘 작동하고 있지만, 메일 수신기(mail-receiver)만 예외입니다.
이메일로 답장하고 ./launcher logs mail-receiver로 로그를 확인하면 다음과 같은 내용이 표시됩니다.
Operating environment:
RUBYGEMS_VERSION=2.7.7
MAIL_DOMAIN=reply.EXAMPLE.com
BUNDLER_VERSION=1.16.3
DISCOURSE_API_USERNAME=system
LANG=en_US.UTF-8
HOSTNAME=discourse-beta-ubuntu-s-4vcpu-8gb-nyc1-01-mail-receiver
RUBY_VERSION=2.3.7
GEM_HOME=/usr/local/bundle
PWD=/
HOME=/root
DISCOURSE_API_KEY=REMOVE
BUNDLE_PATH=/usr/local/bundle
BUNDLE_APP_CONFIG=/usr/local/bundle
TERM=xterm
BUNDLE_SILENCE_ROOT_WARNING=1
RUBY_MAJOR=2.3
SHLVL=1
RUBY_DOWNLOAD_SHA256=c61f8f2b9d3ffff5567e186421fa191f0d5e7c2b189b426bb84498825d548edb
PATH=/usr/local/bundle/bin:/usr/local/bundle/gems/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
DISCOURSE_MAIL_ENDPOINT=http://discuss.EXAMPLE.com.com/admin/email/handle_mail
DOCKER_HOST_IP=172.17.0.1
_=/usr/bin/env
Delivering mail sent to reply.EXAMPLE.com to Discourse
Starting Postfix
로그에서 상태가 "sent"로 표시되는 것 같지만, 답장이 Discourse에 표시되지 않습니다. 혹시 조언해 주실 만한 점이 있을까요? 이 문제는 AWS에서 DO로 마이그레이션을 한 후에만 발생하기 시작했습니다.
<22>Sep 28 15:27:24 postfix/master[1]: daemon started -- version 3.2.4, configuration /etc/postfix
<22>Sep 28 15:28:32 postfix/smtpd[82]: connect from mail-vs1-f104.google.com[209.85.217.104]
<22>Sep 28 15:28:32 postfix/smtpd[82]: B56602F7524: client=mail-vs1-f104.google.com[209.85.217.104]
<22>Sep 28 15:28:32 postfix/cleanup[89]: B56602F7524: message-id=<b1642e591e436f0abeea7d2f34a48aa9@frontapp.com>
<22>Sep 28 15:28:32 postfix/qmgr[81]: B56602F7524: from=<drew@XXXX.com>, size=21558, nrcpt=1 (queue active)
<22>Sep 28 15:28:32 postfix/smtpd[82]: disconnect from mail-vs1-f104.google.com[209.85.217.104] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
<23>Sep 28 15:28:32 receive-mail[91]: Recipient: replies+9009a1d55776827244f5c75332c2efa7@reply.EXAMPLE.com
<22>Sep 28 15:28:32 postfix/pipe[90]: B56602F7524: to=<replies+9009a1d55776827244f5c75332c2efa7@reply.EXAMPLE.com>, relay=discourse, delay=0.3, delays=0.17/0/0/0.13, dsn=2.0.0, status=sent (delivered via discourse service)
<22>Sep 28 15:28:32 postfix/qmgr[81]: B56602F7524: removed
다음 명령을 실행하여 로그를 확인해 보았습니다. 원인을 알 수 없는 일시적인 실패가 발생하는 것 같습니다.
./launcher enter mail-receiver
mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
348432F7524* 11603 Mon Sep 28 16:01:06 mapmeister@XXX.net
replies+429b18013a7bd110cab88a1a0f57f4cd@reply.XXX.com
95ED82F7526* 21757 Mon Sep 28 16:01:10 drew@XXX.com
replies+9009a1d55776827244f5c75332c2efa7@reply.XXX.com
42A2C2F6EE0 21607 Mon Sep 28 15:25:32 drew@XXX.com
(temporary failure)
replies+9009a1d55776827244f5c75332c2efa7@reply.XXX.com
324792F6EDF 23547 Mon Sep 28 15:23:22 drew@XXX.com
(temporary failure)
replies+b42b43ae2bde8b6b951d46647f387b32@reply.XXX.com
D07792F7525 21712 Mon Sep 28 15:53:04 drew@XXX.com
(temporary failure)
replies+9009a1d55776827244f5c75332c2efa7@reply.XXX.com
david
(David Taylor)
9월 28, 2020, 4:09오후
3
mail-receiver 컨테이너의 최신 버전을 실행 중이신가요? 다음 주제가 도움이 될 수 있습니다:
관리자 대시보드에서 이 메시지를 확인하고 이곳에 오셨다면:
mail-receiver의 구버전이 감지되었습니다..
정확한 곳에 오셨습니다.
mail-receiver를 업데이트하려면 discourse 서버에 ssh로 접속하여 다음 두 명령을 실행해 주세요:
sed -i 's/mail-receiver:.*/mail-receiver:release/' /var/discourse/containers/mail-receiver.yml
/var/discourse/launcher rebuild mail-receiver
자세한 내용은 아래를 계속 읽으시면 됩니다.
왜 mail-receiver를 업데이트해야 할까요?
비추천되는 API 인증 방법 을 사용하지 않는 더 새로운 버전으로 mail-receiver를 업데이트해야 합니다.
mail-receiver를 처음 설정할 때 하드코딩된 버전 번호가 포함된 containers/mail-receiver.yml 파일을 설정하도록 안내받았습니다:
b…
확인해 보셔야 할 다른 사항들:
mail_receiver 설정의 API 키가 Discourse 관리자 UI의 API 키와 일치합니까?
/admin/email/rejected 로그에 표시되는 이메일이 있습니까?
안녕하세요. 답변 감사합니다.
mail-receiver.yml 파일에서 base_image: discourse/mail-receiver:release를 사용하고 있으며, 메일 리시버가 오래되었다는 오류 메시지는 확인되지 않습니다. 메일 리시버를 여러 번 다시 빌드해 보았지만 여전히 문제가 해결되지 않았습니다.
/admin/email/rejected 페이지에서 거부된 이메일도 확인되지 않습니다. system 사용자를 위한 새로운 API 키를 모든 권한을 부여하여 발급했고, 이를 mail-receiver.yml에서 사용하고 있습니다. 처음에는 API 문제인 줄 알았지만, 여러 번 확인해 본 결과 숫자가 일치하는 것을 확인했습니다.
궁금한 점이 있는데, 제가 만든 API에서 활동이 전혀 보이지 않습니다
david
(David Taylor)
9월 28, 2020, 4:37오후
6
컨테이너 간의 네트워크 연결을 테스트하려면, 다음과 같이 컨테이너에 진입해 볼 수 있습니다.
./launcher enter mail-receiver
그런 다음 다음을 시도해 보세요.
wget -O - $DISCOURSE_MAIL_ENDPOINT
연결이 성공적으로 이루어지면 다음 내용을 확인하게 됩니다.
wget: server returned error: HTTP/1.1 404 Not Found
그렇지 않다면, 설정 파일의 DISCOURSE_MAIL_ENDPOINT 값을 다시 한번 확인해 보세요.
제 무능함이 정말 심하네요. 커다란 바보 모자를 써야 할 것 같습니다.
Connecting to discuss.360velo.com.com (199.59.242.154:80).
com.com … ??? DISCOURSE_MAIL_ENDPOINT 설정이 잘못되어 있었습니다. URL에 .com.com이 두 번 들어가 있었고, http 대신 https를 사용해야 했어요. 올바른 방향으로 이끌어주셔서 정말 감사합니다.