一度に 2 万人に大量のメールを送信する (理論上)

一度に 2 万人に大量のメールを送信する (理論上)

私のデータベースには20,000件以上の検証済み電子メール アドレス。これらは、Web サイトからニュースレターや更新情報などを受信する許可 (ユーザーがオプションで設定) を得たユーザーの電子メールです。私は実際にこれらの電子メール アドレスを何らかの目的で使用したことはありませんが、ユーザーが Web サイトから定期的に (1 か月または 2 か月に 1 回) 更新情報を受け取るようにしたいと考えています。私が知りたいのは、同じ電子メールを 20,000 人のユーザーにできるだけ早く送信する方法と、これを行う際に直面する可能性がある制限についてです。

Cron と PHP 組み込みの mail() 関数を使用してこれを実行する方法はいくつかありますが、一度に 20,000 件のメールを送信することはできません (送信できますか?)。また、メールは受信者の迷惑メール/ゴミ箱/スパム フォルダーに振り分けられる可能性が高いことはわかっています (問題ありません) が、大量のメールを送信することを禁止する法律や制限 (ホスティング サービスによって定義) があるかどうかはわかりません。

私が必要としているのは、どうすればそれができるのか、そしてこのタスクを達成するための最善の方法は何かという答えです。これは「解決策を教えてください」という質問ではありません。人生で一度に 5 通以上のメールを送信したことがなく、この質問の答えを見つけられなかったため、ヒントが必要なだけです。Facebook、Twitter、Youtube などの大規模なサービスが、ユーザー (おそらく一度に数百万人) にどのように通知するのか疑問に思います。

注: この質問をするのに適切な場所でない場合は申し訳ありません。ここに投稿するか、StackOverflow に投稿するかについて考え直しましたが、私の問題の様子から判断すると (コードを提供していないし、要求もしていない)、SO では「建設的ではない」、あるいは「トピック外」として閉じられると思われます。

答え1

すべてのメールを一度に送信する場合、または 1 つずつ送信する場合、いくつかの問題に直面します。

スパムブロッカー

その量のメールを送信するには、SPF を設定し、場合によっては何らかの証明書署名を行い、静的 IP を持つサーバー (できればリバース DNS) を使用する必要があります。さらに規模が大きくなると、正当な理由と書類を提出してホワイト リストに登録してもらうために、メールのポストマスターに直接連絡する必要があります。私たちは、1 日に約 25 万通のメールを購読者に送信していました。月に 4 回送信することもありました。

私たちは独自のプログラムを作成しましたが、利用可能なプログラムはたくさんあります。

また、各電子メールをループして 1 つずつ送信し、ハイパー スレッド化を試みることもできます。最終的にはドメインに分割され、巧妙なプログラミングにより、約 1 時間ですべてを送信できる可能性があります。

幸運を

答え2

短い答え: 静的 IP と逆 DNS を使用します。可能ですが、1 時間以内に送信しないでください。メール サーバーは、短時間に数千の電子メールを受信することを好みません。ブロックされます。そのすべてのメールが、ネットに突然現れたメール サーバーから送信されている場合は、さらにブロックされるでしょう。

長い回答: 私は週に 1 回 2,000 通のメールを送信します。送信には PHP のプログラムを使用します。これはフリー ソフトウェアですが、ここで名前を挙げてよいかどうかわからないので、挙げません。Web サイトはオレンジ色で、リスト (ニュースレター) を管理するために PHP で作成されています。私のサーバーは 1 GB RAM、Xeon 2.4GHZ、4 コア、Debian で、postfix を使用して 1 秒あたり 4 通 (各約 100K) のメールを送信します (すべての送信メールはウイルス チェック済み)。したがって、1 時間あたり 14,000 通のはずです。1 つのドメインにメールを送信しすぎると、一部のドメインにブロック機能がある可能性があります。Yahoo にはグレーリストのようなものがありました (あります)。一時的な拒否がなくなるまで、3 か月間何度も連絡しなければならなかったことを覚えています。私の ISP は、短時間で接続が多すぎるとメールを拒否するので、postfix で接続数を減らしました。20 から 10 になったと思います。ちなみに、Gmail は 1 秒あたり 5,000 通のメールを送信します。これは、開発者の 1 人から debconf (10、11、12) で聞いた話です。

関連情報