postfix를 로컬 도커 호스트에서 작동하도록 설정해 두었습니다. swaks --to destination@domain.tld --from admin@hostdomain.tld --server localhost -tls 명령으로 테스트했을 때 예상대로 메일이 전달됩니다. 포트 25를 사용하며 메일 전송에 전혀 문제가 없습니다.
그렇다면 app.yml의 SMTP 설정을 어떻게 해야 메일 전달에 localhost를 활용할 수 있을까요?
postfix를 로컬 도커 호스트에서 작동하도록 설정해 두었습니다. swaks --to destination@domain.tld --from admin@hostdomain.tld --server localhost -tls 명령으로 테스트했을 때 예상대로 메일이 전달됩니다. 포트 25를 사용하며 메일 전송에 전혀 문제가 없습니다.
그렇다면 app.yml의 SMTP 설정을 어떻게 해야 메일 전달에 localhost를 활용할 수 있을까요?
SMTP 주소를 127.0.0.1로 설정
정리하자면, IP만 설정하고 나머지 필드는 주석 처리하라는 말씀이신가요? 예:
DISCOURSE_SMTP_ADDRESS: 127.0.0.1
#DISCOURSE_SMTP_PORT: 25
#DISCOURSE_SMTP_USER_NAME:
#DISCOURSE_SMTP_PASSWORD:
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (선택 사항, 기본값 true)
같은 Docker 호스트에 있지만 다른 Docker 컨테이너 안에 있는 경우, 호스트 IP를 지정해야 합니다.
127.0.0.1은 루프백 주소이므로 작동하지 않습니다. 각 컨테이너는 127.0.0.1을 자신으로 인식합니다.
이는 다른 Docker 컨테이너가 아니라, 단순히 Docker 호스트 자체에서 실행되는 것입니다.
그래도 호스트 IP가 필요할 텐데.
그런 경우 공용 IP를 사용해야 하는지, 아니면 Docker가 사용하는 특별한 IP 체계가 있는 건가요? 예를 들어, 호스트에서는 docker0의 IP가 172.17.0.1이고, 컨테이너 내부(./launcher enter app; apt-get install ifconfig 실행 시)에서는 eth0의 IP가 172.17.0.2로 보입니다. discourse 컨테이너 내부에서는 호스트의 172.17.0.1을 사용해야 할 것 같지만, 나중에 이 값이 갑자기 바뀌면 곤란할 것 같아 걱정입니다.
여기에 기록을 남기자면, 인증이 필요 없는 경우 다음 설정만으로 Docker 호스트의 SMTP 서버에 메일을 전달할 수 있었습니다 (기타 SMTP 관련 설정은 모두 주석 처리함):
DISCOURSE_SMTP_ADDRESS: 172.17.0.1
DISCOURSE_SMTP_PORT: 25