안녕하세요. 제 로컬 서버에는 Docker 없이 Discourse가 설치되어 있습니다. 또한 iRedMail도 설치해 두었습니다. 처음에는 mail.ru의 SMTP 서버를 사용해보려고 했습니다. 테스트 메시지와 초대장 모두 전송되었지만, 이메일 알림은 오지 않았고 비밀번호도 재설정되었습니다. 그래서 로컬 메일 서버를 설치하고, 메시지가 나가지 않는 원인을 로그에서 확인해 보자는 생각으로 설치를 진행했습니다. 로컬 메일함 간의 메시지 전송은 정상적으로 이루어집니다. 테스트를 위해 필요한 조건은 충족된 셈이죠. 로컬 Discourse와 메일 전송에 충분할 거라고 생각했습니다. 로컬 SMTP 서버를 설정하고 테스트 이메일을 보내니… 잘 도착했습니다! (승자 아님) 메일 서버의 /var/log/mail.log를 확인해 보았습니다.
로컬 도메인 "@ugda.space"에 메일함을 2개 만들었습니다. 서로 간에는 메시지가 정상적으로 주고받고 있지만, Gmail, Mail, Yandex 메일함에는 메시지가 전달되지 않습니다. 테스트를 위해 로컬 내부 통신만으로도 충분할 것 같아 설정을 하지 않았습니다.
@Anv 솔직히 말할게요: 좋은 불문율은 "상대가 당신을 경청할 의지가 없다면, 그들에게 당신과 이야기하라고 하지 말라"는 정도가 되어야 합니다. 여기서 "경청"이란 상대방이 말하는 내용을 진지하게 고려하는 것을 의미합니다. 포럼에 참여하는 것, 특히 도움을 요청하는 경우에는 상대방에게 이야기하라고 하는 것에 해당한다고 볼 수 있겠죠.
같은 내용을 반복해서 말하고, 대화 상대도 같은 말을 반복하도록 강요하는 것은 어디까지나 아무런 결과를 가져오지 않습니다.
불편하신 마음 충분히 이해합니다. 그리고 매번 답변하실 때마다 모든 SMTP 릴레이 문제를 디버깅해 드릴 여유가 없어서 죄송합니다.
SMTP 메일 호스트가 메일을 수신하고 있는 것 같지만, 그것이 반드시 SMTP 릴레이로 작동한다는 보장은 없습니다.
기억이 정확하지는 않지만, sendmail이나 기타 메일 클라이언트를 사용하여 SMTP 호스트가 릴레이로 제대로 작동하는지 확인할 수 있는 플래그가 있는 것 같습니다. sendmail -G 옵션에 대해 조사해 보시거나(또는 다른 테스트 방법을 찾아보시거나) 기본적으로는 현재 작업 중인 호스트와 다른 테스트용 이메일 주소로, 새로 설정한 SMTP 호스트를 릴레이로 사용하여 메일을 보내야 합니다.
과거 이야기
과거에는 대부분의 SMTP 호스트가 기본적으로 메일 릴레이 기능을 제공했습니다. 하지만 스팸 발송자들이 릴레이 기능(호스트 소유자의 모르게)을 악용하여 전 세계에 스팸을 뿌렸기 때문에, 인터넷상의 모든 SMTP 호스트가 거대한 스팸 상자가 되어 버렸습니다.
결론적으로, 새로 설정한 SMTP 호스트가 대신 메일을 릴레이할 수 있는지 확인해야 합니다.
설정 튜토리얼을 자세히 살펴보고, SMTP 호스트를 릴레이로 설정하는 부분에 대한 언급이 있었는지 확인해 보셨나요?
그냥 제 생각을 말로 풀어보는 것이니, 이 내용이 SMTP 호스트 프로젝트의 다음 단계로 나아가는 데 조금이라도 도움이 되길 바랍니다.
Docker 없이 Discourse를 설치하셨다고 말씀하셨습니다. Docker를 사용한 “클래식” 방식으로 새로운 설치를 진행하면서, 해당 설치 과정에서 생성한 이메일 주소를 입력하는 것이 가능한가요? 아니면 사용 중인 컴퓨터에서 Docker를 실행할 수 없는 상황인가요?
도움이 되지 않을 것 같지만, “참고 자료” 하나를 드리자면, Docker 기반의 프로덕션 설치 환경이든 macOS 데스크톱의 “Docker 미사용” 개발 환경이든, Discourse에서 SMTP 메일 설정을 할 때 제3자 SMTP 서비스를 사용하면서 문제가 된 적은 한 번도 없습니다.
여러분의 이야기에 관심을 갖게 되었고, 이제 이 작은 퍼즐에 매우 흥미를 느껴 향후 몇 주 안에 VPS의 Ubuntu Linux 슬라이스에서 SMTP 릴레이를 설정해보고, "제3자 솔루션"에 의존하는 대신 "오래된 방식"의 SMTP 릴레이와 Discourse가 제대로 작동하는지 확인해 볼 시간을 찾아보겠습니다.
이 구성을 구축하는 데 몇 주가 걸릴 수 있으니 미리 사과드립니다. Discourse 플러그인 개발과 Rails가 모든 구성 요소와 어떻게 작동하는지를 배우는 데 너무 재미를 붙여, 지루한 정부 관련 서류 작업에 뒤처져 있기 때문입니다.
여러 번 시행착오를 거친 끝에 Postfix와 함께 Discourse를 동작하도록 만들었습니다. 제가 사용한 단계는 다음과 같습니다. 도움이 되길 바랍니다:
A 레코드를 설정하여 새 서버를 가리키도록 합니다. 예를 들어 forum.domain.com
Postfix를 설치하고 forum.domain.com을 myhostname으로 설정한 뒤, Discourse 컨테이너가 인증 없이 Postfix와 통신할 수 있도록 mynetworks에 172.17.0.0/16을 추가합니다. 172.17.0.0/16은 Docker 컨테이너에서 기본적으로 사용되는 네트워크입니다.
Postfix가 이메일을 보낼 수 있는지 확인합니다. 저는 swaks를 사용하는 것을 선호합니다.
swaks -t your_name@gmail.com
"This is a test mailing"이라는 제목의 이메일을 수신해야 합니다.
containers/app.yml에서 DISCOURSE_SMTP_USER_NAME, DISCOURSE_SMTP_PASSWORD, DISCOURSE_SMTP_ENABLE_START_TLS에 해당하는 3줄을 주석 처리하도록 확인하세요.
그리고 DISCOURSE_SMTP_DOMAIN을 forum.domain.com으로 설정합니다(여기서는 자신의 도메인 이름으로 대체해야 합니다).
테스트하려면 docker exec -it app bash 명령으로 Discourse 컨테이너에 접속한 후 다음을 실행할 수 있습니다: