묻고답하기
20만명의 회원에게 전체메일링을 발송하고 싶습니다.
2015.07.21 18:37
현재 XE공홈 자료실에 있는 전체 메일 발송 모듈을 개조해서
sleep을 넣어 끊어서 발송을 하고 있습니다.
다만 sendmail을 통해 발송하다보니 발송 시간과 누적된 큐가 쌓이면 상당히 발송이 느려지고
실패율이 상당히 높아지네요..
물론 센드메일을 최적화 시켰고 q폴더도 다양화했습니다.
센드메일을 버리고 qmail 이나 다른 데몬 프로그램을 이용하면 훨씬 수월해질까요..?
추천부탁드립니다.
20만명의 회원에게 10시간 내로 발송이 되었음 좋겠네요..
(아 물론 도메인은 화이트도메인에 등록되어있습니다.)
댓글 11
-
기진곰
2015.07.21 19:07
-
꾸링
2015.07.21 19:09
주당 1건씩은 보내기 때문에 해당 모듈을 사용해서는 금액 부담 부분이 만만치 않아서
또 방식은 알림모듈의 서버를 통해 발송할 뿐 해당 모듈도
sleep형태로 끊어서 발송하는 방식에는 큰 차이가 없는 것으로 알아요..
제가 네이버 지식인에 질문해서 답변받은 것을 XE에 질문한적이있는데
해당 개발자님이 글을 보시고 sleep을 통해 발송하도록 적용하신 것으로 기억합니다.
자체 서버를 통해 발송하고 싶습니다..
물론 단독 서버를 사용하고 있습니다.
화이트도메인에 등록되어있어도 각 포털사이트에서 스팸 취급을 할까요..?
-
기진곰
2015.07.21 19:42
화이트도메인은 어디까지나 최소한의 자격요건일 뿐입니다. 대량메일 발송시에는 국내외 포털들의 횡포가 대단해요. 20만 명 중 극소수라도 스팸신고를 하거나, 심지어 실수로라도 스팸 단추를 클릭하면 화이트도메인이고 뭐고 다 소용없는 경우도 많습니다. 그래서 메일발송 전문업체들은 주요 포털들과 별도로 협의를 해두곤 하죠.
우리알림 서버가 정확히 어떤 방식으로 구현되었는지는 모르지만, 몇 건 발송하고 sleep하고 또 몇 건 발송하고 sleep하는 식으로는 서버의 처리량이 너무 낮아서 사업이 불가능하겠죠. 우리알림 개발자님이 직접 운영하시는 서버니까 다른 사람에게 알려주는 코드와는 다를 가능성이 높습니다. 따로 문의해 보시면 20만 건 발송에 얼마나 시간이 걸릴지 알려주실 거예요.
꼭 직접 발송하시겠다면 sendmail보다는 postfix나 qmail을 추천합니다. 또한 메일을 발송하는 스크립트도 웹을 통해 실행하지 말고 쉘 스크립트로 만들어 쓰시면 좋습니다. (PHP도 CLI 방식으로 설치하면 쉘에서 실행 가능합니다.) 단, postfix나 qmail처럼 여러 쓰레드에서 동시에 메일을 발송하는 데몬들은 한 곳에 한꺼번에 너무 많이 접속하지 않도록 제한해 주어야 합니다. 특히 한메일은 동접이 일정 숫자를 넘어가면 IP 자체를 블럭해버리곤 해요.
-
GG
2015.07.21 19:51
네이버메일 기준 2천통에 2분쯤 잡습니다. 더 빨리 보낼수도 있지만 안정성을 같이 잡는 수준을 정해 놓았습니다. 서버를 늘리면 서버 배수로 그만큼 빨라지는 구조입니다. -
GG
2015.07.21 19:49
저희 wms 서버는 sleep을 주지않고 멀티쓰레드 방식으로 메일 업체들의 smtp 서버로 메일들을 빠르게 전송합니다. 누가 답변을 대신했는지 모르지만 답변은 저만 가능할듯 하네요. -
꾸링
2015.07.21 20:26
다른 개발자분의 답변과 착각했나봅니다..
오해를 만들어 죄송합니다. .^^;
-
GG
2015.07.21 20:53
카ㅇ 24에 웹 호스팅 신청하고 php 를 통해 웹에서 이메일을 전송해 보려면 루프로 150명 정도밖에 한번에 보내기 힘듭니다.
그나마도 카ㅇ 24 정책에 의거하여 sendmail 일 500명 제한이 있습니다.
카ㅇ 24에는 외주로 개발해 서비스중인 대량메일 비즈 서비스가 별도로 있습니다. 그래서 그런것 같습니다.
슬립을 주라는 것은 메일을 보내고 아직 종료되지 않고 쌓여있는 큐가 처리될 동안 좀 기다리라는 의미일 것입니다.
그러나 문제는 이뿐만이 아닙니다.
php 라던가 웹서버라던가 디비서버라던가 다양한 설정들이 한방에 1천통조차 보내기 힘들게 합니다.
그래도 불가능한건 아닙니다.
검색을 잘 해 보시면 php 기반으로도 100만통정도 보내는 사람들이 존재합니다.
20만통을 우리알림 모듈을 사용하여 전송하고 싶으시다면 모듈에서 2천통씩 100개의 패키지로 세팅될 것입니다.
그리고 전체 보내는 버튼을 통해 100번 루프가 돌면서 우리메일 서버로 데이터를 전송할 것입니다.
루프 100번으로 20만통을 우리메일쪽으로 전송해 주시는건 그나마 낫습니다.
한 100만통쯤 되면 2천통짜리 루프 500번인데 일반적인 웹서버 설정으로 이 부분조차 버거울 수 있습니다.
메모리라던가 지연시간 등 루프가 돌다가 에러가 안나도록 적절히 세팅해 줘야 할 수도 있습니다.
이정도 규모라면 우리메일 API로 전용 소프트웨어를 개발해 주시는게 더 나을 수 있습니다.
대량메일이라는게 참 쉬울것 같다가도 어려운것 같습니다.....
-
꾸링
2015.07.21 21:25
기술적으로도 어려운데 각 포털사의 정책문제까지 해결하면 역시 대량 매일링은 서브파트에 맡기는게 답인듯한데
수익이 많지 않은 사이트에서 맡기기엔 사실상 가격적인 부담이 크네요 ㅠ
-
기진곰
2015.07.21 22:23
20만 통의 메일을 발송한다는 것은 사실 20만 개의 웹페이지를 표시하는 것과 비슷한 개념이죠. 주어진 정보를 바탕으로 서로 약간씩 다른 20만 개의 문서를 작성하여 큐에 넣었다가 빼고, 다른 컴퓨터와 20만 번 통신을 해야 합니다. 10시간 안에 처리하려면 메일 1통당 0.18초의 시간밖에 주어지지 않는데, SMTP의 특성상 메일 한 통을 보낼 때마다 여러 차례 패킷이 오가야 하기 때문에 오히려 웹페이지를 주고받는 것보다 더 느릴 수도 있습니다.
이렇게 생각해 보면 상당히 부담스럽게 들리죠? 그게 현실입니다. 보내는 입장에서나 받는 입장에서나 상당한 자원이 소모될 수밖에 없습니다. 대강 하려면 저렴하게 처리할 수도 있겠지만, 안정적으로 구현하려면 어느 정도의 비용이 발생하는 것은 어쩔 수 없다고 생각합니다.
-
푸하라
2016.12.29 09:00
그냥 java를 사용하여 보내시는것이 낳을듯 싶은데.....
혹시 필요하시다면 연락주세요...
-
빠르고정확하게
2018.02.03 12:05
안녕하세요
저도 글쓴이님과 비슷하게 매주 7천통의 메일을 보내야해서
자바로 구현하고 싶은데...
혹시 가능하시다면 참고할만한 자바소스를 보내주시면 감사드리겠습니다.
eldrids@naver.com
eldrids83@gmail.com
자료실의 우리알림 모듈을 사용해 보세요.
20만건 제대로 발송하려면 돈 좀 쓰셔야 합니다.
sendmail이든 qmail이든 일반 서버에서 돌리면
각 포털에서 스팸취급당할 가능성이 높은 건 마찬가지입니다.