그누보드를 클라우드 웨이즈 호스팅에서 오픈 했을때 이메일이 보내지지 않을 겁니다. 이 때 클라우드 웨이즈에서 elastic email 을 통해 메일서버를 만들고 그누보드에 연동하는것까지 해보도록 하겠습니다.
클라우드 웨이즈 Elastic Email
Elastic Email 은 클라우드 웨이즈에서 메일을 보낼 수 있도록 제공하는 부가 서비스 입니다. 해당 부가서비스는 유료이지만 저렴하고 쉽게 사용할 수 있다는 장점이 있습니다.
순서는
- elastic email 부가서비스 구매
- 도메인 dns 설정
- dns 체크
- 테스트 이메일
이렇게 진행이 되며 dns 체크 프로세스에서 dns 전파로 인한 약간의 딜레이가 발생할 수 있습니다.
클라우드 웨이즈 Elasitc Email 공식 문서 : https://support.cloudways.com/en/articles/5130879-how-to-activate-the-elastic-email-add-on
Elastic Email 가격
- 1000 Emails ($0.10 / Month)
- 3000 Emails ($0.30 / Month)
- 5000 Emails ($0.50 / Month)
- 8000 Emails ($0.80 / Month)
- 12000 Emails ($1.10 / Month)
- 15000 Emails ($1.40 / Month)
- 25000 Emails ($2.30 / Month)
- 50000 Emails ($8.00 / Month)
- 100K Emails ($15.00 / Month)
- 250K Emails ($25.00 / Month)
- 500K Emails ($37.00 / Month)
- 1M Emails ($57.00 / Month)
이며 부가서비스 페이지에서 플랜 선택을 하면 바로 바뀌도록 쉽게 되어 있습니다.
클라우드 웨이즈 서버에서 Elastic Email Add On (부가서비스) 신청
클라우드 웨이즈 vultr 이며 아마 웹호스팅 업체에 관계없이 인터페이스 동일할 것으로 예상합니다.
위와 같이 클라우드 웨이즈 콘솔창에서 server 선택후 elasitc email 을 선택 또는 신청 할 수 있습니다.
또는 server 선택후에 메뉴 아이콘 누르고 Add-ons 를 클릭하여 부가서비스 창으로 이동할 수 있습니다.
신청이 정상적으로 완료되었다면 해당 화면을 볼 수 있습니다.
총 5개 아이콘이 있습니다. 순서대로 API 아이콘, DNS 체크, 메일 로그, 연동된 도메인, 수정 아이콘 입니다.
첫번째 API 아이콘에서 smtp username 과 smtp password 에 해당하는 api key 를 볼 수 있습니다.
두번째 dns 체크 아이콘에서 도메인에 dns 설정이 잘 되어있는지 체크할 수 있습니다.
도메인에서 MX 등 DNS 설정
DNS 레코드 변경을 해줘야 하니 도메인을 구입한 서비스업체로 가서 변경을 해주도록 합니다.
공식 문서를 보고 그대로 따라하였습니다.
아래는 DNS 레코드 정보 입니다.
@ 는 내 도메인을 의미 합니다. 특수문자가 안써지는 경우에는 내 도메인 명을 그대로 써보시기 바랍니다.
SPF
- Type : TXT
- Name/Host/Alias : @
- Value/Answer/Destination : v=spf1 a mx include:_spf.elasticemail.com ~all
- TTL : 자동 혹은 가장 작게
DKIM
- Type : TXT
- Name/Host/Alias : api._domainkey
- Value/Answer/Destination : k=rsa;t=s;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCbmGbQMzYeMvxwtNQoXN0waGYaciuKx8mtMh5czguT4EZlJXuCt6V+l56mmt3t68FEX5JJ0q4ijG71BGoFRkl87uJi7LrQt1ZZmZCvrEII0YO4mp8sDLXC8g1aUAoi8TJgxq2MJqCaMyj5kAm3Fdy2tzftPCV/lbdiJqmBnWKjtwIDAQAB
- TTL : 자동 혹은 가장 작게
Tracking
- Type : CNAME
- Name/Host/Alias : Tracking
- Value/Answer/Destination : api.elasticemail.com
- TTL : 자동 혹은 가장 작게
DMARC
- Type : TXT
- Name/Host/Alias : _dmarc
- Value/Answer/Destination : v=DMARC1; p=none;
- TTL : 자동 혹은 가장 작게
위의 레코드 값들을 붙여서 저장하시면 됩니다.
DNS 전파는 최대 48시간 까지 걸릴수 있으므로 약간 기다렸다가 체크를 해야 합니다. 저는 30분 정도 뒤에 체크 했습니다.
MX 인증 확인 안될수 추가해야 하는 레코드
MX1
- Type : MX
- Name/Host/Alias : @
- Value/Answer/Destination : mx1.emailsrvr.com.
- 우선순위 : 10
- TTL : 자동 혹은 가장 작게
MX2
- Type : MX
- Name/Host/Alias : @
- Value/Answer/Destination : mx2.emailsrvr.com.
- 우선순위 : 20
- TTL : 자동 혹은 가장 작게
SPF
- Type : TXT
- Name/Host/Alias : @
- Value/Answer/Destination : v=spf1 include:emailsrvr.com ~all
- TTL : 자동 혹은 가장 작게
첫 4개 등록후 MX 레코드 확인이 안되시면 다음 3개의 레코드를 추가로 저장하시면 되는걸 확인할 수 있습니다,
Elastic Email 과 도메인 바인딩 (bind)
도메인에 DNS 레코드를 설정했다면, Elastic Email 에도 내 도메인과 연동한다는 것을 알려주어야 합니다.
Elastic Email 도메인 인증 체크
도메인 DNS 레코드를 바꾸었고, Elastic Email 에서 등록된 도메인도 확인했다면 실제로 잘 등록 되었는지 확인해보아야 합니다.
도메인 입력 후 VERIFY DOMAIN 을 누르시면 됩니다.
도메인이 인증 된 것을 볼 수 있습니다.
이메일 보내기 테스트
어떤 이메일로 보낼 것인지 먼저 정해야 합니다.
Elastic Email 을 신청한 Server 의 Application 단에서 바꿀수 있습니다.
해당 서버에 연결되어있는 애플리케이션을 선택한뒤
Application Management -> Application Settings -> General -> DEFAULT EMAIL SENDER 에서 변경 할 수 있습니다.
그 후에 테스트 이메일을 전송해서 정상적으로 수신했다면 Elastic Email 을 사용할수 있습니다.
그누보드에서 테스트 이메일 보내보기
오늘의 메인 주제인 클라우드 웨이즈에서 그누보드 이메일 서비스 연동하는법 입니다.
윗 부분은 클라우드 웨이즈에서 Elastic Email 을 이용해 메일링을 구현하는 부분이었습니다. 이제 이 부분을 그누보드에 적용해 주기만 하면 됩니다.
그누보드 설치 과정은 생략하도록 하겠습니다. https://sir.kr/manual/g5/2 이걸 보고 따라 하시면 됩니다.
그누보드가 설치가 완료되었다는 전체하에 설명하도록 하겠습니다.
클라우드 웨이즈 Elastic Email SMTP 세팅
이번 포스팅에 핵심은 사실 이부분 입니다.
그누보드에서 SMTP 연동시 아이디와 비번이 필요한데 클라우드웨이즈 Elastic Email 은 API KEY 만 제공해 주는 것이어서 문의를 넣어 봤습니다.
클라우드 웨이즈 측에 문의를 넣었고 다음과 같은 답변이 왔습니다.
처음에은 Username 과 Password 만 API KEY 로 넣고 해봤는데 되지 않아서
SMTP AUTH : Plain 부분도 코드에 같이 넣었더니 정상적으로 작동했습니다.
그누보드 SMTP 설정
그누보드 root 폴더에 config.php 를 보시면
// SMTP // lib/mailer.lib.php 에서 사용 define('G5_SMTP', '127.0.0.1'); define('G5_SMTP_PORT', '25');
이런 코드를 보실수 있을 겁니다. 해당 코드를
// SMTP // lib/mailer.lib.php 에서 사용 define('G5_SMTP', 'smtp.elasticemail.com'); define('G5_SMTP_PORT', '2525'); define('G5_SMTP_SECURE', 'TLS'); define('G5_SMTP_USER', 'API KEY'); define('G5_SMTP_PW', 'API KEY');
이렇게 변경해 주시면 됩니다. 이때 API KEY 에 해당하는 부분은 클라우드 웨이즈 Elastic Email 맨처음 아이콘을 눌러보면 확인할 수 있습니다.
G5_SMTP_USER 와 G5_SMTP_PW 둘다 API KEY 로 설정해 주시면 됩니다.
그누보드 Mailer.php 설정
마지막으로 그누보드 root -> lib -> mailer.lib.php 파일에 들어가셔서
위처럼 되어있던 코드를
로 바꿔 주시면 됩니다.
$mail = new PHPMailer(); // defaults to using php "mail()" if (defined('G5_SMTP') && G5_SMTP) { $mail->IsSMTP(); // telling the class to use SMTP $mail->Host = G5_SMTP; // SMTP server if(defined('G5_SMTP_PORT') && G5_SMTP_PORT) $mail->Port = G5_SMTP_PORT; /* 추가 시작 */ $mail->SMTPAuth = "Plain"; $mail->SMTPSecure = G5_SMTP_SECURE; $mail->Username = G5_SMTP_USER; $mail->Password = G5_SMTP_PW; /* 추가 끝 */ }
해당 코드를 변경할 부분에 복사 붙여넣기 해주시면 됩니다.
그누보드 메일 테스트
그누보드 관리자 페이지에서 메일 테스트를 보내서 메일 수신까지 확인했다면 메일 서비스는 구현된것 입니다.
정리
글이 길어서 장황해 보일수 있지만 Elastic Email 과 그누보드 를 따로따로 해보시면 됩니다.
오늘의 포스팅에서 핵심은 고객센터에 문의해서 Elastic Email 의 SMTP 정보를 알 수 있었던 것입니다.
Elastic Email 만 연동하면 수신이 안된다고 합니다. 이번 프로젝트 같은 경우는 회원가입이나 비밀번호 변경시 웹사이트 측에서 일방적으로 메일을 보내기 위해 메일 서비스를 구현하는 것 이었습니다. no-reply@asdf.com 처럼 발신 메일을 구성했습니다.
발신 메일뿐만 아니라 수신까지 원하신다면 구글 메일 smtp 설정해서 따로 하시거나, 클라우드 웨이즈 부가서비스 중 Elastic Email 위에 Rackspace Email 를 같이 이용하면 이메일 수신도 가능하다고 합니다.
Elastic Email 추가 참고 자료 : https://avada.tistory.com/2970