Discourse가 SMTP 서버가 이메일 메시지가 제출되었음을 확인하는 응답을 반환할 때까지 대기하는 타임아웃 간격을 연장하는 방법이 있을까요? 아니면, Discourse가 이 확인을 요구하지 않도록 구성할 수 있는 방법이 있을까요?
현재 Discourse 인스턴스가 중복 이메일을 생성하는 문제를 겪고 있습니다. 이메일을 전달하도록 제출할 때 Discourse가 Net::Timeout 오류를 받고 있습니다. 실제로는 이메일 제공업체가 이메일을 전달하고 있지만, Discourse는 이를 알지 못하여 이메일을 다시 전송합니다. 이 과정이 끝없이 반복됩니다.
확인해 주셔서 감사합니다. 동의합니다. 제 이메일 제공업체가 문제의 원인인 것 같습니다. 이메일 제출 후 응답이 충분히 빠르게 이루어지지 않기 때문입니다. 문제의 원인은 어떻게든 부하(load)와 관련이 있을 것이라고 추정할 수밖에 없습니다. 어떤 날에는 문제가 발생하지 않기 때문입니다.
여러 가지 이유로 이메일 제공업체를 변경하는 것은 상당한 도전 과제입니다. Discourse를 설정하여 이 문제를 우회하는 방법을 찾는 것이 가장 매력적인 해결책입니다.
새로운 메일 제공업체로 전환하는 것이 이 문제를 해결하는 유일한 방법처럼 보이지만, 이를 위해서는 내 도메인 전체의 메일 제공업체를 다시 구성해야 하며, 이는 내가 피하고 싶은 작업입니다.
Discourse의 발신 메일 처리 코드를 수정하여 과거와 같이 메일 제출 실패를 무시하도록 할 수 있는 방법이 있을까요? 저는 Rails 개발자가 아니기 때문에 어디서부터 시작해야 할지 막막합니다. 향후 Discourse 업데이트를 받을 수 있는 능력을 해치고 싶지 않습니다.
과거에 한 번 시도해 본 적이 있었는데, 설정을 잘못해서 해결하지 못했기 때문에 아무것도 바꾸는 것을 꺼리고 있습니다. 또한 Discourse 이메일이 제 회사 도메인에서 발송되기를 원하지만, 더 이상 그렇게 할 수 없으므로, 말씀하신 대로 발신용 이메일에 서브도메인을 사용하도록 다시 시도해 보겠습니다.
RackSpace Cloud를 사용하여 이메일 서브도메인을 생성했고, Mac에서 Apple Mail과 curl을 통해 해당 도메인으로 메일을 보낼 수 있음을 확인했습니다. 또한 서버에서 curl을 사용하여 메일을 보낼 수도 있음을 확인했습니다. 그러나 discourse-doctor에서 다음 오류가 발생합니다:
Testing sending to support@latenightsw.com using secure.emailsrvr.com:465, username:username with plain auth.
======================================== ERROR ========================================
UNEXPECTED ERROR
Net::ReadTimeout
====================================== SOLUTION =======================================
This is not a common error. No recommended solution exists!
Please report the exact error message above to https://meta.discourse.org/
(And a solution, if you find one!)
제 app.yml 파일에는 다음 설정이 포함되어 있습니다:
DISCOURSE_SMTP_ADDRESS: secure.emailsrvr.com # (mandatory)
DISCOURSE_SMTP_PORT: 465 # (optional)
DISCOURSE_SMTP_USER_NAME: username # (optional)
DISCOURSE_SMTP_PASSWORD: password # (optional, WARNING the char '#' in pw can cause problems!)
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)