お世話になります。
Webサービスの開発に携わるものです。
最近なメールサーバー周りで悩ましい問題があります。
メルマガを一週間に一度、7000通ぐらい送っています。
その配信スピードは、全体に行き渡るまで20時間をぐらい要します。
なぜ20時間かかるかといいますと、Cronで1分間に10通ずつ、SMTPに接続して送信するスクリプトを使っていて、
実際には、SMTPサーバーの接続待ち時間があり、処理時間としては、1分間に5通というところです。
チームメンバーからは、もっと早くしたいとの要望があり、どうしたものかというところです。
そこで、みなさんにお聞きしたいのですが、著名なサービスのメルマガ配信環境ってどういった構成ですか?
また、仮にその構成で、1万通メルマガ配信を行った場合、どのくらいの時間で処理できますか?
それこそ、Teratailのメルマガ配信メールサーバーの構成、もしくは、利用しているSMTPサービスをお聞きしたいです。処理時間も含め。
利用しているメールサーバーの構成
1台のPostfix(2.11.0)
送信ドメイン認証:Dkim SPF
メモリ1GBのVPS
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/06 05:45
回答5件
0
SendGridエバンジェリストの中井と申します。
皆さんおっしゃる通りやはり専用のサービスをお使いいただくのがもっとも楽かと思います。確かに有料ではありますが、送信を早くするためにやらなければならないこと、エラーへの対応等を考えていると十分ペイするコストだと思います。
メール周りは宛先ISPの都合で色々とトラブルが発生しやすいですが、そのへんも含めて全て任せられるので運用の事自体をほとんど気にする必要もなくなります。
大量送信時に具体的に考慮しなければならないのは、
- 同時コネクション数
- 1コネクションあたりの送信メッセージ数
- 時間あたりの送信数
- 4xxのレスポンスがあったときの再送頻度、間隔
あたりです。
これらは各ISPによって異なりますし、送信元のレピュテーションによっても変動するので自分たちで最適値を導き出すのはかなり難易度が高いと思います。メール送信サービスは、それまでのノウハウを蓄積しているので強いわけです。
SendGridのプランで考えると4万通まで送信可能なBronzeプラン(月額1,180円)になると思いますが、移行は一番シンプルな方法だと、今の送信先としているSMTPサーバをSendGridにするだけで終えることが可能です。
しかしそれでも一通ずつリクエストを投げるという方法だと時間がかかってしまうので、理想的にはAPIを使って送信部分を実装することをおすすめします。1リクエストで1,000の宛先までいけるので7リクエストで終わります。どんなに遅くても送信処理自体は1分もかからなくなると思います。到達までも数分みておけば十分かと思います。
投稿2017/02/18 08:25
編集2017/02/18 09:23総合スコア12
0
特定のサービス名を上げるのは避けますが、素直に、有料の配信サービスを使った方が良いと思います。
下手なことをするとブラックリストに載ってしまう可能性があります。
大量のメール配信はそれれなりにノウハウが必要だと思いますが、そういった手間よりも配信サービスを使った方があるかに安価です。
投稿2017/02/03 05:20
総合スコア1939
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/03 06:30
2017/02/06 08:36
2017/02/06 16:50
0
※注意 Postfix / メルマガの知識は全くありません。
メルマガの仕組みはよくわかりませんが、
メーリングリストに配信者のアドレスを管理して配信するのではないでしょうか。
「postfix mail magazine」で検索した所、
「SendGrid」というのが良さそうです。
投稿2017/02/03 04:25
総合スコア882
0
これ以上ペースを上げるとさばききれないということでしょうか。
明らかに時間がかかりすぎています。
identの設定を確認することをお勧めします。
投稿2017/02/03 05:05
総合スコア367
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/03 06:28
2017/02/03 06:30
2017/02/03 06:52
2017/02/03 07:39 編集
2017/02/03 07:47
2017/02/03 07:57 編集
2017/02/03 08:00
2017/02/03 08:13
0
大手のメールサービスなどでは、同じサーバから短時間に多数のメッセージが送られてくると、自動的にそのサーバからの配信を拒否する仕組みを持っています。質問者さんのシステムで、待ち時間をとってメッセージを送っているのは、この制限にひっかからないための対策でしょう。
送信先ドメイン多重化
上記のことを逆に考えると、別々のドメイン宛てに配信するものは一緒に送ってしまっても問題ないですね。それぞれ別々のメールサーバに送られるので、各々のメールサーバでの制限にひっかからなければ問題はありません。
宛先をドメイン毎にまとめる
(本節は、コメントに基づき追記しました)
メッセージの内容が全く同じで送信先アドレスのみ異なる場合は、一回のSMTPセッションで複数の宛先を指定して送ることができます (ただし内容が同じでも、VERPなどでエンヴェロープFromを変えている場合はこの方法は使えません)。Postfixにメッセージを送る際に、同じドメインの宛先アドレスを複数まとめて指定すればいいです。
1セッションあたりの宛先数の上限もメールサーバによって異なりますので、どこまで増やせるかは宛先ドメイン毎に実際に試すか、送信先サイトに個別に問い合わせることで決定します。一般に、10宛先くらいまでなら問題はないでしょう。
また多くのメールサーバでは、宛先数上限を超えたらそれ以前の宛先のみ受け付け、残りの宛先には再送するよう送信元のPostfixに促します (たまに、上限を超えるとそれ以前のものも含め全ての宛先を拒否するサーバもあります)。
送信先サーバ毎の閾値に合わせて送る
1通送信するたびに待ち時間を取るのは、あまりよい考えではないです。上で述べた「短時間に多数のメッセージ」の閾値を超えない数だけ、同じドメイン宛てのものを連続して送ってしまい (Postfixのキューに投入してしまい)、そのあとで待ち時間をとるのがいいです (待ち時間は、キューに入ったメッセージがほとんど配送できるまでどのくらいかかるかを計測して決めます。この値は送信先メールサーバ毎に異なってくるでしょう)。
また、ご質問の条件だと、送信先メールサーバあたり1分間に数通 (宛先ドメインによっては1通以下) 程度しか送っていません。もっと増やしても大丈夫でしょう。ただし、上述の閾値はメールサーバ毎に異なります。どこまで増やせるかは宛先ドメイン毎に実際に試すか、送信先サイトに個別に問い合わせることで決定します。
SMTPセッション多重化
以上説明してきたのは、Postfixのキューにメッセージを投入するタイミングを調整することで効率的に配送できるようにする方法ですが、キューに入った後の挙動もチューニングできます。
同じ送信先メールサーバに複数のメッセージを配送するとき、Postfixはサーバに複数のSMTPセッションを確立し、同時に複数の宛先に配送するようになります。この同時接続数にも、メールサーバ毎に制限があります。SMTP同時接続数の上限はsmtp_destination_concurrency_limit
パラメータで調整できます。特に上限が大きかったり小さかったりする宛先ドメインについては、別個にsmtpトランスポートを定義してパラメータを変えればいいでしょう。
以上、かなりざっくりですが、回答してみました。回線事情が極端に悪いとかでもないかぎり、上記のうち最初の2点だけやるだけでも、2、3桁は速くなるのではないですか。
投稿2017/02/06 04:08
編集2017/02/06 08:39総合スコア4333
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。