EC2가 구축한 Rails 애플리케이션의 메일을 SES에서 Zoho로 전송하는 이야기

AWS 기능으로만 메시지 수신


이것은 AWS의 EC2 실례를 빌려 Rails 응용을 구축할 때의 일이다.소형으로 시작했기 때문에AWS 무료 사용 프레임워크 털이 조금 난 정도의 비용 계획을 구상해 네트워크 토폴로지·내부 건축을 구축했다.
그중 현재 토론 중인 것은 메일이다.당초 가입 신청 때와 비밀번호가 복원될 때 날아오르는 메일을 구상했기 때문에 보낼 수만 있다면 일단 OK하고 SES를 통해 메일을 보냈다.
그러나 앱 개발 진행 중에도 메일을 받고 싶어 일단 AWS 기능으로 어떻게 메일을 주고받는지 조사한다.

SES 만 메일을 받을 수 없음


규칙 설정 수신의 일부 조사 결과 S3에 데이터를 보내는 규칙집을 제작해 일단 우편물을 받은 상태였다.
하지만 선더버드 같은 MUA를 통해 보려면 어떻게든 MTA가 필요하다.
AWS에서는 Lambda라는 실행 가능한 스크립트 서비스가 있는데, 이 서비스를 이용해 다른 지역의 MTA로 전송하거나 자신이 운영하는 메일 서버에 메일을 보내고 MUA가 그곳을 방문하는 방법이 있다.
또 AWS가 제공하는 MTA에 접근할 수 있는 MUA 서비스AWS WorkMail도 있다.
그러나 어느 것이든 프레임워크를 무료로 이용하는 범위를 넘어섰기 때문이다(전자는 Rails에서 하나의 실례를 사용했기 때문에 메일 서버에 사용할 실례를 하나 더 만들어야 한다.Gmail 등 다른 영역의 메일 서버로 전송하려면 Lambda도 무료 범위이지만 설정이 복잡할 수 있다(´63;).후자의 WorkMail은 매달 사용자가 4달러이고 비용이 약간 높다. 다른 이용할 수 있는 클라우드 서비스가 있는지 조사할 때 [Zoho Mail]은 무료 방안으로 대응할 수 있을 것 같아 이를 채택하기로 했다.
메일과 DNS의 관계로 같은 영역에서 다른 서비스를 사용할 수 없기 때문이다(예를 들어 발송은 SES에서 하고 수신은 GSuite에서 하는 등)는 Zoho Mail을 사용하여 메일을 발송하기로 결정했다.

Zoho 메일에 계정 등록


일단 계좌부터 만들자.
기본적으로 등록할 때의 절차와 같은 방식으로 설정한다.(자세한 내용은 참고문헌 참조)
또 중간에 건너뛰는 경우제어판도 설정할 수 있다.
  • 도메인 인증
  • 도메인 이름 인증에는 TXT, CNAME, 웹 인증 등의 인증 방법이 있습니다.이번에는 씨나미 음반을 로트 53에 등록해 인증에 성공했다.
    TXT 레코드로 등록하면 향후 SPF 레코드의 기술에서 까다로워지기 때문에 CNAME 레코드 등록을 통해 도메인 인증이 성공했습니다.
  • MX 레코드의 변경
  • 이어 MX 레코드도 관리하는 도메인으로 보내는 메일의 수신 목적지의 메일 서버를 자오가 운용하는 메일 서버로 보내기 위해 로터53으로 로그인했다.
    Zoho는 다음 메일 서버를 배송 주소로 제공합니다.
    10 mx.zoho.com.
    20 mx2.zoho.com.
    50 mx3.zoho.com.
    
    왼쪽의 숫자는 우선도를 나타낸다.메일은 이 값이 작은 서버에 우선적으로 발송됩니다.
  • SPF 레코드 등록
  • SPF 레코드는 메일을 보낼 때 도메인 이름 인증을 위한 메커니즘 중 하나로, 메일이 전송이 허용된 MTA에서 발송된 것인지를 식별하는 데 효과적인 방법이다.
    https://mailadmin.zoho.com/cpanel/index.do#spf의 레코드를 Route 53에 등록합니다.

    이번에 상기 설정과 EIP가 부여된 웹 서버에서 발송을 허용하고자 합니다ip4의 값도 함께 지불되었습니다. (IPv6를 사용하지 않으면 사용할 수 없습니다.)"v=spf1 include:zoho.com ip4:**.**.**.** -all"
  • DKIM 등록
  • DKIM도 메일을 보낼 때 도메인 이름 인증 메커니즘 중 하나다.DKIM은 우편물 발송 측에서 우편물에 전자서명을 부여하고 수신자가 전자서명을 대조해 인증하는 구조다.
    대조를 위해 권위 있는 DNS 서버에 공개 키를 등록함으로써 수신자에서 전자 서명을 대조할 수 있다.
    https://mailadmin.zoho.com/cpanel/index.do#dkimselector
    Zoho가 키 쌍을 만드는 기능도 있으니 이 내용을 Route 53에 로그인하십시오.

    이상, 우편물 수발을 진행하는 설정은 대체로 완료되었습니다.

    config/environments/production.편집


    마지막으로 Rails 애플리케이션의 설정을 수정합니다.
  • 수정 전
  • config/environments/production.rb
     - config.action_mailer.delivery_method = :ses
    
  • 수정 후
  • config/environments/production.rb
     +  config.action_mailer.smtp_settings = {
     +      :address              => "smtp.zoho.com", 
     +      :port                 => 465, 
     +      :user_name            => '*****@*****', 
     +      :password             => '*****', 
     +      :authentication       => :login, 
     +      :ssl                  => true, 
     +      :tls                  => true, 
     +      :enable_starttls_auto => true 
     +  } 
    

    Gemfile에서 aws-ses 제거


    나중에 남을 수도 있지만 당분간 사용하지 않을 것을 고려하여 Gemfile에서 삭제합니다.
    % bundle exec gem uninstall aws-ses
    Successfully uninstalled aws-ses-0.6.0
    % bundle install --path=vendor/bundle
    

    총결산


    이에 따라 자오메일의 메일 송수신을 설정했다.사실 SPF랑 DKIM.일본어를 열심히 공부해야 하지만 속도와 예산의 균형으로 생각해야 한다
    대략적인 절차 방법입니다.
    그나저나 저는 Zoho로 전용 메일 계정을 만들고 싶은데 무료 계획은 설정할 수 없을 것 같아요.

    참고 문헌


    https://www.zoho.com/mail/help/adminconsole/domain-verification.html
    https://sendgrid.kke.co.jp/blog/?p=2149
    http://salt.iajapan.org/wpmu/anti_spam/admin/tech/explanation/dkim/
    https://mechalog.com/zohomail1

    좋은 웹페이지 즐겨찾기