내 도메인 이메일로 Ghost 블로그 회원 기능 활성화하기: Cloudflare - Gmail SMTP 연동 가이드

내 도메인 이메일로 Ghost 블로그 회원 기능 활성화하기: Cloudflare - Gmail SMTP 연동 가이드

블로그를 Gitbook에서 Ghost로 옮겼다. Gitbook에서 글을 작성할 때 한글 입력, 띄어쓰기 버그가 심해서 글을 작성하기가 매우 힘들었다.

이 Ghost 블로그는 현재 나의 NAS에서 도커를 통해 작동 중이다. 이후에 내가 올렸던 도커 컨테이너들의 생성 과정을 글로 작성할 것이다.

여튼 본론으로 넘어가자면, Ghost 블로그에는 Member 기능이 있는데 이메일을 통해 로그인 가능하다. 물론 도메인에서 메일 서버를 설정해두지 않으면 작동하지 않는다.

그래서 이 기능을 살려보고자 내 도메인으로 이메일을 설정하고 Google 메일 서버로 연동해서 사용할 것이다.

즉, 이 블로그에 Member 가입을 하려면 메일 인증이 필요한데, 그 메일을 내 도메인에서 보내게 할 것이다.

계획

honey720.com 도메인에서 전송되는 메일 서버를 Gmail로 설정 및 연동한다.

유저에게 발송하는 이메일은 [email protected] 주소에서 Gmail SMTP를 연동해서 유저에게 전송한다.

유저에게서 수신받는 이메일은 유저 이메일에서 [email protected]으로 메일을 전송한다. Cloudflare에서 이메일 라우팅을 통해 Gmail로 수신받도록 할 계획이다.

Cloudflare에서 이메일 라우팅 활성화 - 수신 이메일

내 도메인은 Cloudflare에서 DNS 서비스를 사용 중이다. 그래서 Cloudflare 이메일 기능을 사용할 것이다.

이메일 탭을 누르면 시작 화면이 표시된다. 시작 버튼을 눌러 이메일 라우팅을 활성화한다.

사용자 설정 주소를 생성한다.

사용자 설정 주소를 생성하면 유저가 해당 주소로 이메일을 보내면 여기에 저장된 대상 메일로 이메일 라우팅된다.

Cloudflare는 이메일 라우팅에 필요한 DNS 레코드를 자동으로 추가해준다.

이로서 수신 이메일 설정은 간단하게 끝낼 수 있다.

내가 설정한 사용자 설정 주소로 메일을 보내면 대상 주소인 내 Gmail로 메일이 도착한 것을 확인 가능하다.

Gmail에 내 도메인 연동 - 발신 이메일

이제는 Gmail을 통해 내 도메인으로 발신 메시지를 한번 보내보자.

우선 연동할 Gmail에서 2단계 인증(2FA)를 활성화 해야 한다.

여기2단계 인증 사용 설정을 누르고 전화번호 인증을 하면 된다.

다음으로 앱 비밀번호를 설정해야 한다.

여기서 사용할 앱 이름을 입력하고 만들기버튼을 누르면 비밀번호가 생성된다.

생성된 앱 비밀번호는 16자리 알파벳으로 이루어진다. 이 앱 비밀번호를 메모장에 적어 두자.

다음으로 Gmail 설정에서 발신 메일을 추가하고자 한다.

지메일 화면 상단의 톱니바퀴를 클릭하고 모든 설정 보기버튼을 눌러 설정 페이지로 들어가자.

설정 탭에서 계정 및 가져오기 탭의 다른 주소에서 메일 보내기 항목에서 다른 이메일 주소 추가 버튼을 누르면 새 창이 뜨게된다.

추가할 이메일 주소에 대한 정보를 입력한다.

이름은 원하는 대로 작성하고 이메일 주소는 Cloudflare에서 추가한 사용자 지정 도메인을 입력하자.

별칭으로 처리는 체크 해제 하는 것을 추천한다.

다 입력했으면 다음 단계 >> 버튼을 클릭하자.

다음으로 SMTP 서버를 등록할 것이다.

우리는 Gmail SMTP를 통해 메일을 전송할 것이므로 SMTP 서버에 smtp.gmail.com을 입력하면 된다.

사용자 이름은 연동할 gmail id를 입력하고, 비밀번호로는 아까 생성한 앱 비밀번호를 입력하라.

포트는 587로 설정하고 TLS를 사용한 보안 연결을 체크한 후, 계정 추가 >>버튼을 클릭하여 이메일 주소를 등록하자.

확인 링크가 포함된 이메일이 등록한 주소로 전송되었다.

수신 이메일 라우팅에 의해 Gmail에서 확인 가능할 것이다.

링크를 클릭하면 이제 Gmail에서 도메인 메일을 보낼 수 있게 된다.

보낸사람 드롭다운 메뉴에 추가된 도메인 주소가 보이게 된다.

나에게 메일을 보내보면 발신자가 나의 도메인으로 표시된다.

Ghost 블로그 config 파일 수정

Ghost 블로그에서 메일을 보내기 위해서는 Ghost 내부 설정파일을 손봐야 한다.

도커에서 돌아가는 Ghost 컨테이너는 ssh를 통해 접근할 수 있다.

ssh에서 sudo 권한을 얻은 후, 다음 명령어를 입력해 Ghost 컨테이너 쉘에 접속하자.

docker exec -it <container_name_or_id> /bin/bash

이후 ls를 입력하면 아래와 같은 파일들이 나타난다.

우리는 config.production.json파일을 수정해야 한다.

해당 파일의 내용을 확인하기 위해 다음의 명령어를 입력하자.

cat config.production.json

그러면 7번째 줄에 Mail에 대한 설정이 존재한다.

이 부분을 Gmail SMTP 서버로 연결 시켜야 한다.

echo 명령어를 통해 파일을 수정하자.

여기서 pass에 해당하는 값은 아까 메모한 앱 비밀번호 16자리이다. 띄어쓰기 없이 입력하자.

echo '{
  "url": "http://localhost:2368",
  "server": {
    "port": 2368,
    "host": "::"
  },
  "mail": {
      "transport": "SMTP",
      "options": {
        "service": "Gmail",
          "auth": {
            "user": "[email protected]",
            "pass": "yourapppassword"
      }
    }
  },
  "logging": {
    "transports": [
      "file",
      "stdout"
    ]
  },
  "process": "systemd",
  "paths": {
    "contentPath": "/var/lib/ghost/content"
  }
}' > /var/lib/ghost/config.production.json

다시 cat 명령어를 입력하면 아래와 같이 적용된걸 볼 수 있다.

시놀로지의 Container Manager에서 Ghost를 재시작하면 모든 설정 및 작업이 완료된다.

결과

이제 나의 블로그로 돌아가서 회원가입을 진행하면 확인 메일이 정상적으로 발송될 것이다.

다음에는 이메일 보안 레코드를 적용해보면서, 각 이메일 보안 레코드에는 어떤 것이 있는지, 어떤 역할을 하는지 알아보자.

참고:

도메인 활용 / 이메일 - Cloudflare
별도의 메일서버를 구축하지 않고 Cloudflare, gmail 설정만으로평범하고 긴 gmail 주소 대신 아이디@내도메인 메일 주소로 연결해 봅시다[email protected] -> [email protected] 수신포워딩누군가 master@cod
[Ghost] Mail발송용으로 Mailgun 대신 Gmail을 사용하기
배경 * Ghost 5.9버전 이후 현재 Mail 발송이 되지 않는다. Ghost is currently unable to send email. See http://support.ghost.org/mail for instructions. * 이로 인해서, 멤버십 관련 가입을 위한 Magic Link라든가, News Letter 등 모든 부분이 Working하지 않는다. * 특히 Ghost 5.9 버전 이후부터는 Comment 기능이 추가되었는데, 이
ghost에 구글 SMTP 설정하기
ghost 폴더에 있는 config.production.json 위 파일을 수정해야 합니다. 16번째 줄을…