Node.js기반 서버에서 메일을 보낼 때, 기존에는 Nodemailer를 사용하고 있었고 계정은 Gmail의 것이었다. 원래 Gmail로 메일을 보내려면 Gmail API를 사용해야 하지만, Nodemailer는 사용자를 대신해 직접 로그인하여 메일을 전송한다. 그렇기 때문에 구글 아이디, 비밀번호를 제공하고, 구글 계정 설정에서 보안 수준이 낮은 앱의 액세스를 허용해야 한다.
보안 수준을 낮추는 것이 마음에 들지 않았지만 메일을 보낼 수 있게 되었다. 그런데 한 가지 문제가 더 있는데, 하루에 500개의 메일만 보낼 수 있다는 것이다. UOSTime을 서비스하면서 이 한도에 걸릴 수가 있었고, 이를 해결하기 위해 Google Workspace를 사용한다면 월 6달러의 지출이 예상되었다.
Gmail API를 사용하는 것은 메일 전송 한도의 걱정이 줄어든다. 다만 메일 전송의 경우 OAuth 인증으로만 API를 사용할 수 있는데, 테스트 모드에서는 refresh token이 7일 내에 만료되므로 사람이 매번 직접 새 토큰을 발급해야하는 관리의 번거로움이 있다. 이를 해결하기 위해 프로덕션 모드로 전환하려는 경우 구글에 해당 앱에 대한 설명을 제출해야 하는데, 이때 메일 전송 권한 사용에 대한 자세한 설명을 담은 영상을 유튜브에 게시해야 한다..
AWS SES는 API나 SMTP 등을 이용해 이메일을 보낼 수 있도록 하는 플랫폼이다. SPF, DKIM도 지원하고 요금도 부담되지 않아서 적절하다고 생각했다. 여기에 S3, Lambda를 이용(약간의 추가비용이 발생하지만 크지 않다.)해서 송수신 메일을 저장/관리할 수도 있다. 나는 내 도메인의 MX 레코드 설정을 통해 Daum Smartwork로 수신메일을 받은 다음 POP3를 설정해서 Gmail에서 해당 메일을 받아볼 수 있도록 했다. 그 후 송신 메일마다 나 스스로를 참조(CC)하도록 설정해서 송신 메일도 Gamil에서 확인할 수 있도록 했다.