블로그가 약간 바뀐 것은 기분탓이 아닙니다. 이제 혼자 사용하는 블로그가 아니기도 하기 때문에 편의를 위해서 오늘은 Mailgun을 통해 메일 서버 지원이 필요한 비밀번호 찾기 기능 등을 활성화해보기로 했습니다.


Mailgun을 사용하는 이유

Mailgun을 사용하는 이유는 단순합니다. 편하기 때문입니다. 기존에 메일 서버는 보안과 스팸 등등으로 인해 수많은 제한을 통과해야만 했고 설정 난이도도 쉽지 않은 편이었습니다. 막상 메일을 보낼 수 있게 되어도 스팸함이 아닌 사용자의 '받은 편지함'에 바로 꽂아주기 위해서는 그에 따른 추가 설정도 필요했습니다. 그와 달리 Mailgun은 무료 이메일 전송 할당량도 월 5,000개로 넉넉한 편이고 준비된 서버에 준비된 API를 가지고 있는 탄탄한 서비스입니다.

Mailgun에 가입하고 도메인 등록하기

아래 Mailgun의 웹 사이트에서 바로 가입을 하실 수 있습니다. 유료 계층과 무료 계층은 약간의 차이가 있는데 기본적으로 유료 계층은 Pay as you go입니다. 즉, 종량제라는 것이죠. 이메일 1,000개 당 0.8$로 약 1,000원이 되지 않는 금액에 만나볼 수 있었습니다.

Mailgun Technologies
Powerful Transactional Email APIs that enable you to send, receive, and track emails, built with developers in mind. Learn more today!

로그인을 하고 나면 대시보드 페이지에서 좌측 사이드바의  'Sending' 메뉴에서 'Domains' 항목을 클릭하면 우측 상단에 'Add New Domain' 버튼으로 새 도메인을 등록할 수 있게 됩니다.

이메일 서버의 경우 US와 EU 중 하나를 기본적으로 선택할 수 있게 되어 있습니다. DKIM 키의 경우에는 2048을 선택하여 부가적인 보안 효과를 얻을 수 있게 합니다. 아직 Mailgun과 같은 경우 4096바이트 키는 지원하지 않는 것인지 아직 무료 계층에 머무르고 있어서 그런지는 모르겠습니다. 그 후에는 표시되는 모든 DNS 레코드를 적용하신 다음 페이지 하단의 버튼으로 레코드 확인을 끝내면 해당 도메인에 대한 셋업이 완료됩니다.

Ghost에 SMTP 서버 구성 추가하기

Mailgun에서 인증정보 가져오기

Mailgun의 경우에는 좌측 사이드바에서 'Sending'에서 'Domain settings' 항목을 선택하고 SMTP credentials 탭에서 어떤 인증 정보를 사용해야 하는지 알 수 있습니다. 단, 한 번 생성된 토큰은 다시 볼 수 없으니 무조건 재생성하셔야 하니 주의하시길 바랍니다.

postmaster 계정도 좋지만 되도록이면 스팸함에 들어갈 확률을 낮추기 위해 되도록이면 계정 이름과 실제 전송하는 계정 이름을 맞추는 것이 좋습니다. 그렇기 때문에 no-reply 계정을 하나 더 만들어 관리하고 있습니다. 여기에서 만든 이메일 주소와 발급받은 토큰을 기억해두시면 됩니다.

Ghost 설정에 추가하기

Ghost가 설치된 경로에서 config.production.js를 열고 mail 항목을 추가해주면 됩니다. 혹시라도 메일 전송을 위해 Vultr와 같은 호스팅사는 기본적으로 메일 시스템 포트가 사용 불가능한 경우가 있으니 티켓을 열어 사용할 도메인과 목적, 그 양을 보내면 어렵지 않게 심사 후 사용이 가능합니다. 아래 설정에서는 보안 연결을 위해 465번 포트를 사용했습니다.

"mail": {
    "transport": "SMTP",
    "options": {
        "service": "Mailgun",
        "port": 465,
        "secureConnection": true,
        "auth": {
            "user": "no-reply@smtp.typed.sh",
            "pass": ""
        }
    }
}
  • mail.options.auth.user: 발급한 인증정보 ID (이메일 형식)
  • mail.options.auth.pass: 발급한 인증정보의 토큰

만약 보내는 사람을 변경하고 싶다면 mail.options.from 값을 아래와 같이 수정하면 됩니다.

  • no-reply@smtp.typed.sh
  • Typed.sh 사무국 <no-reply@smtp.typed.sh>

Mailgun에서 유럽 서버로 등록하신 분도 계실텐데요. 해당 경우에는 mail.options.host 값을 수정해서 아래와 같이 유럽 서버로 변경해주어야 합니다.

  • smtp.eu.mailgun.org

설정이 모두 완료되었다면 이제 Ghost 블로그를 재시작해주면 됩니다. 저와 같은 경우는 PM2를 사용하여 관리하기 때문에 pm2 reload <ID>가 되겠지만 기본적으로 Ghost-CLI를 사용하면 ghost restart 명령으로 가능합니다.

여기까지 입니다.