이메일 전송 속도 제한을 어떻게 설정하나요?

Discourse 포럼을 운영하고 있는데, 전송 속도 제한이 느립니다(20건/초).
Discourse에서 전송 속도 제한을 설정할 수 있을까요?

unsubscribe_keys 테이블에 매일 거의 500,000건의 레코드가 쌓이는 반면, mail_log에는 9,000건, skipped_mail_log에는 1,000건만 기록되고 있다는 점을 발견했기 때문입니다. 우리 포럼에는 약 500,000명의 회원이 있습니다.

이메일 전송 속도가 너무 빨라서 어떤 이상한 문제가 발생하는 건지 확실하지 않아서, 전송 속도를 조절(throttle)하려고 시도해 봤지만 성공하지 못했습니다.

Unsubscribe_keys

email_log

더 빠른 메일 서버를 사용하거나 설정을 변경하여 메일이 정상적으로 전송되도록 해야 합니다.

요약 이메일의 전송 주기를 변경하고, 하루 최대 이메일 수 설정을 조정할 수 있습니다.

속도 제한(rate limit) 설정은 없습니다.

전송 속도를 지정하는 것이 필요한지 확실하지 않습니다…
60/sec까지 높일 수 있을지 몰라도, 서버가 너무 빠르게 전송해서 차단될 가능성이 여전히 존재하기 때문입니다.

이메일을 보내는 데 무엇을 사용하고 계신가요?

저는 AWS SES 서비스를 사용합니다

그들의 지원팀에 문의해 보셨나요?

왜 이렇게 많은 Discourse 회원들에게 이메일이 발송되고 있는 걸까요? 정확히 어떤 목적으로 이메일을 보내는 건지, 그것이 더 중요한 질문입니다.

일반적인 Discourse 설치 환경에서는 “전체 사용자” 대상 이메일은 다이제스트(Digest)뿐이며, 그것조차 1주일 이상 웹사이트에 접속하지 않았지만 1년 이상 부재한 상태는 아닌 오직 해당 사용자에게만 발송됩니다.

일반적으로 누군가가 직접 당신에게 말을 걸 때만 이메일을 받게 되며, 그마저도 지난 10분 이내에 웹 브라우저를 통해 웹사이트에 접속한 기록이 없을 때만 발송됩니다.

몇 달 전에 이벤트를 진행한 적이 있습니다. 당시 약 9만 명의 회원이 등록했습니다. 그리고 이제 그 회원들이 몇 주간 이탈할 수 있습니다. 그래서 시스템이 그들에게 다이제스트 이메일을 보냈습니다.

해결 방법을 찾으신 분 계신가요? 아마존 SES로 전환하려고 하다가 막상 초기 제한이 초당 14통의 이메일이라는 걸 깨달았습니다. Discourse가 SES로 이메일을 얼마나 빠르게 전송할지 확신이 서지 않습니다. 저희 사이트는 이메일을 많이 보내거든요.

Discourse의 최대 이메일 전송 속도를 아시는 분 계신가요? 초당 14통 이상을 전송하려고 시도할까요?

너무 빠르게 전송된다면, 대부분의 사용자에게 특정 날(저희 사이트의 import 기념일)에 몰아서 보내는 대신, 일주일 동안 디제스트 전송 시간을 고르게 분산하는 스크립트를 작성하는 것이 좋은 아이디어일 수도 있겠다는 생각이 듭니다.

수정: Mandrill 로그를 확인하면 이것이 문제가 되는지 알 수 있겠다고 깨달았습니다. Mandrill 측의 추가적인 스로틀링이 아니라면, 최대 약 초당 8통의 이메일을 전송하는 것으로 보이므로 문제없을 것 같습니다.

조시, 안녕하세요!

다이제스트의 경우, 컨테이너 빌드 파일에서 다음과 같이 Discourse 전역 설정을 420으로 설정하여 초당 14개로 제한할 수 있습니다:

 DISCOURSE_MAX_DIGESTS_ENQUEUED_PER_30_MINS_PER_SITE: 420

이것은 원하시는 내용과 “완전히” 일치하지는 않지만, 매우 근접합니다.

초당 14개(질문에 언급된 내용)에 30초를 곱하면 420이 되므로, 이 전역 설정은 코드에 “적혀 있듯이” 다이제스트를 30분마다 약 420개로 제한합니다.

참고:

물론 SMTP 채널로 다른 이메일을 전송하고 있다면 이 값을 낮추어 조정해야 합니다. 또는 다이제스트 이메일을 위한 별도의 독립된 채널을 설정할 수도 있습니다(우리가 그렇게 하고 있는 방식과 동일합니다).

참고: 이 전역 설정은 기본적으로 30분당 10,000으로 설정되어 있습니다. 제 생각에는 시간당 다이제스트 수가 꽤 많은 편입니다. :slight_smile: 그래서 우리는 매월 “합리적인” SendGrid 청구서를 받기 위해 이 값을 훨씬 낮게 설정했습니다.

30분당 30개의 다이제스트는 하루 1,440개, 또는 월 약 43,200개에 해당합니다(몇 일 전에 이 변경을 하기 전에 많은 수의 다이제스트를 전송했기 때문입니다). 다음 달에는 30분당 약 60개의 다이제스트, 즉 월 약 86,400개의 다이제스트(±)로 이 값을 올릴 예정입니다.

도움이 되길 바랍니다.