그리고 SMTP 설정이 정확한지 확인하려고 /var/discourse/discourse-doctor를 실행해 보았지만, 설정을 검증하지 못했습니다. 다음과 같은 메시지가 표시됩니다:
==================== YML SETTINGS ====================
awk: not an option: --field-separator=:
DISCOURSE_HOSTNAME=
awk: not an option: --field-separator=:
SMTP_ADDRESS=
awk: not an option: --field-separator=:
DEVELOPER_EMAILS=
awk: not an option: --field-separator=:
SMTP_PASSWORD=
awk: not an option: --field-separator=:
SMTP_PORT=
awk: not an option: --field-separator=:
SMTP_USER_NAME=
awk: not an option: --field-separator=:
LETSENCRYPT_ACCOUNT_EMAIL=
하지만 제 YAML 파일(./containers/app.yml)은 완벽하게 포맷된 것 같습니다.
## 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: mail.redacted.com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: redacted@redacted.com
DISCOURSE_SMTP_PASSWORD: "redacted"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)
## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
LETSENCRYPT_ACCOUNT_EMAIL: redacted@redacted.com
@irwinstar, 공개 포럼에서 제 메일 서버를 노출하지 않기 위해 실제 메일 서버 주소를 삭제했습니다. 하지만 제 메일 클라이언트(정상 작동 중)에서 설정을 복사해 왔고, 실제 메일 서버의 SMTP 설정과도 비교해 보았으므로 설정이 정확하다고 보증할 수 있습니다.
도와주겠다는 말씀에 감사드립니다. 문제는 SPF/DKIM 기록에 있는 것 같아서 현재 수정을 시도하고 있습니다.
그럼에도 불구하고, discourse-doctor는 이를 올바르게 파싱해야 합니다. 제가 vim/nano로 파일을 직접 편집한 적이 없기 때문에 무슨 일이 일어나고 있는지 잘 모르겠습니다. 명확히 하자면, 해당 YAML은 discourse-setup을 사용하여 생성되었습니다.
확신은 없지만, 465 포트를 몇 번 시도해 보았습니다.
결국 이 “hieulq/mailproxy” Docker 이미지를 메일 프록시로 사용했습니다.
그리고 이 app.yml 설정을 Discourse에 적용했습니다.
이 사용법은 별로 좋아 보이지 않지만, 작동은 합니다.
오늘 메일 플러그인을 찾아보려고 했지만, 아무것도 찾지 못했습니다.
포트 587을 사용하면 전체 이메일을 telnet으로 성공적으로 전송하고 인증도 정상적으로 완료됩니다. 그래서 설정을 변경했습니다.
이제 이메일이 전송될 때 다음과 같은 오류가 발생합니다:
Delivered mail d86b48cc-b0f4-4df3-8960-ab5ff96613a0@discourse.imbleau.com (251.0ms)
Job exception: hostname "mail.redacted.com" does not match the server certificate
그런데 주목할 점은, 이제 더 이상 연결 타임아웃(60초가 지난 후 발생)이 아니라, 250ms 만에 발생하는 다른 예외라는 것입니다.
이 설정은 TLS 암호화를 비활성화합니다. 그러나 유일한 문제는 잘못된 호스트명을 사용했다는 것이며, 즉 메일 서버가 mail.redacted.com이 아닌 다른 내용을 나타내는 인증서를 제시하고 있다는 것입니다. 많은 메일 서버는 여러 다른 호스트명으로 알려져 있으며, 인증서에 사용된 호스트명을 찾아내는 것만 필요합니다.