이메일 전송 오류

안녕하세요.

메일 서버를 교체한 후 메일을 보내려고 했는데, 이전에는 정상적으로 작동했지만 지금은 메일을 보낼 수 없습니다. 연결은 100% 정상적으로 작동하고 있다는 것을 아래 로그에서 확인할 수 있습니다. 하지만 어떤 이유에서인지 메일 전송이 실패하고 있습니다.

Email address for mail test? ('n' to skip) [community@brohosting.eu]:
Sending mail to community@brohosting.eu. . .
Testing sending to community@brohosting.eu using smtppro.zoho.eu:587, username:info@brohosting.eu with login auth.
SMTP server connection successful.
Sending to community@brohosting.eu. . .
Sending mail failed.
end of file reached

어떤 조언을 주실 수 있을까요?

VPS 호스팅 제공업체가 SMTP 포트를 잠금 해제했는지 확인하세요(연결이 확인된 것으로 보이지만) … 요청에 대한 증거가 있는지 이메일 서비스 로그도 확인하세요.

라즈베리파이에서 항상 그랬듯이 실행 중입니다. 네, 연결 상태는 좋습니다. Zoho에 확인해 보겠습니다.

예전에 ‘파일 끝’ 메시지를 본 적이 있지만, 어떻게 해결했는지 기억이 나지 않아요. 여기서 검색해 보시면 찾을 수 있을지도 몰라요.

사실 이 문제에 대한 해결책은 없어야 합니다. 연결이 성공적으로 이루어졌다면 제가 왜 무언가를 수정해야 합니까?

또한, 네, 비슷한 주제들의 게시물을 여러 개 발견했고, 당신이 답변을 남긴 스레드도 하나 있었습니다. 하지만 비추천(deprecated)된 465 포트로 돌아가는 일은 하지 않을 겁니다. 분명히 문제는 Discourse 자체나 그 메일 전송 라이브러리에 있습니다.

수정된 app.yml 파일을 공유해 주시겠어요? SMTP 섹션에서 무언가가 누락되었거나 설정이 잘못되었을 것 같습니다.

공유는 할 수 있지만, 연결이 성공적으로 이루어졌다면 어떻게 잘못 설정된 것이죠?

## this is the all-in-one, standalone Discourse Docker container template
##
## After making changes to this file, you MUST rebuild
## /var/discourse/launcher rebuild app
##
## 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

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Uncomment these two lines if you wish to add Lets Encrypt (https)
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"

## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
expose:
  - "8080:8080"   # http
  - "15432:5432" # PostgreSQL
#  - "8443:8443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Set db_shared_buffers to a max of 25% of the total memory.
  ## will be set automatically by bootstrap based on detected RAM, or you can override
  #db_shared_buffers: "256MB"

  ## can improve sorting performance, but adds memory usage per-connection
  #db_work_mem: "40MB"

  ## Which Git revision should this container use? (default: tests-passed)
  #version: tests-passed

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  EMBER_CLI_PROD_ASSETS: 1
  # DISCOURSE_DEFAULT_LOCALE: en

  ## How many concurrent web requests are supported? Depends on memory and CPU cores.
  ## will be set automatically by bootstrap based on detected CPUs, or you can override
  #UNICORN_WORKERS: 3

  ## TODO: The domain name this Discourse instance will respond to
  ## Required. Discourse will not work with a bare IP number.
  DISCOURSE_HOSTNAME: community.brohosting.eu

  ## Uncomment if you want the container to be started with the same
  ## hostname (-h option) as specified above (default "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: List of comma delimited emails that will be made admin and developer
  ## on initial signup example 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'community@brohosting.eu'

  ## TODO: The SMTP mail server used to validate new accounts and send notifications
  # SMTP ADDRESS, username, and password are required
  # WARNING the char '#' in SMTP password can cause problems!
  DISCOURSE_SMTP_ADDRESS: smtppro.zoho.eu
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: info@brohosting.eu
  DISCOURSE_SMTP_PASSWORD: "XXXXXXXXXXXX"
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, default true)
  DISCOURSE_SMTP_DOMAIN: brohosting.eu
  DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_NOTIFICATION_EMAIL: community@brohosting.eu

  ## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
#  LETSENCRYPT_ACCOUNT_EMAIL: info@brohosting.eu

  ## The http or https CDN address for this Discourse instance (configured to pull)
  ## see https://meta.discourse.org/t/14857 for details
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  ## The maxmind geolocation IP address key for IP address lookup
  ## see https://meta.discourse.org/t/-/137387/23 for details
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456

## The Docker container is stateless; all data is stored in /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-chat.git
          - git clone https://github.com/discourse/discourse-reactions.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-chat-integration.git


## Any custom commands to run after building
run:
  - exec: echo "Beginning of custom commands"
  ## If you want to set the 'From' email address for your first registration, uncomment and change:
  ## After getting the first signup email, re-comment the line. It only needs to run once.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"

info@brohosting.eu가 community@brohosting.eu로 이메일을 보내기 위해 적절한 구성이 되어 있나요?

이것은 SMTP 제공업체 측에서 확인해야 합니다.

무언가를 시도해 보고 알려드릴게요.

반누, 감사합니다. 이 부분에 대해 충분히 주의를 기울이지 못했네요. Zoho의 설정은 이런 옵션들을 너무 숨겨놓아서 싫습니다.

좋은 소식은, 당신이 제안한 대로 smtp 라이브러리를 디버깅하는 데 5일을 쓰지 않았다는 것입니다!

(최근 며칠에 걸쳐 10시간 넘게, 내리기가 되지 않는 드롭다운 메뉴를 삽입하는 코드를 디버깅했습니다. 드롭다운을 삽입하는 코드를 꼼꼼히 살펴보고, 드롭다운에 데이터를 생성하는 코드를 확인했습니다. 다른 드롭다운들이 어떻게 작동하는지 비교해 보기도 했습니다. 그러다 제가 삽입한 css 한 줄이 드롭다운이 펼쳐질 공간을 없애고 있다는 것을 발견했습니다.)

작동하게 되어 기쁩니다!

내 말은, 그래도 최소한 확인을 해서 더 나은 오류 메시지를 출력할 수 있어야 한다는 거예요. 지금 이거 정말 혼란스럽거든요.

그것이 표준 설치에 권장 메일 제공업체 목록이 포함된 이유입니다. 이러한 권장 사항에서 벗어나려면, 이로 인해 발생하는 추가적인 기술적 복잡성도 함께 수용해야 합니다. 모든 메일 서버가 동일한 방식으로 동작하는 것은 아니며, 이를 해결하는 것은 Discourse의 역할이 아닙니다.

위 내용을 요약하면, Zoho를 잘못 설정한 것입니다. Discourse는 해당 설정을 확인할 수 없으며, 올바른 정보를 제공하고 있다고 가정합니다. ./discourse-setup을 다시 실행했다면, 다시 발송 주소를 묻고, 이 잘못된 설정으로 인해 이를 다시 잘못 입력하게 되었을 것입니다.

사용자들에게 많은 문제를 예방해 줄 수는 있지만, 그들 자신으로부터의 실수를 막아주는 것은 드뭅니다. 다음에는 더 가능성이 높은 측면에 집중하고, 외부 시스템의 세부 사항을 다시 확인한 후에, 수천만 명의 사용자에게 서비스를 제공하고 있는 코드에 문제가 있다고 주장하는 것이 좋습니다. 이렇게 하면 훨씬 더 빠르게 답변을 얻을 수 있을 것입니다.

맞습니다. 하지만 다시 한번 말씀드리자면, Discourse를 설정하기 전에 수행해야 할 이 꽤나 자명한 단계에 대해서도 이메일 문제 해결 가이드에 언급할 수 있습니다.

어쨌든, 위에 언급된 분들의 도움에 감사드립니다.

그렇게 되면 좋겠습니다.

하지만 “end of file reached”(파일 끝 도달)가 항상 “사용한 발신 주소에 대해 메일 서비스를 올바르게 구성하지 못했다” 또는 문제를 해결하기 위해 사용자가 수행한 다른 작업이 반드시 그런 의미는 아니라는 점이 명확하지 않습니다.

실제로 Discourse가 메일 서버에 성공적으로 연결된 이후에도 잘못될 수 있는 부분이 많습니다. 더 나은 오류 메시지를 원한다면, 연결을 단순히 끊기만 하는 대신 Zoho 측에서 해당 오류 메시지를 제공하도록 요청하는 것이 좋습니다.