さるところから「携帯キャリアのスパムフィルタに引っかからないメール送信はどうすればよいか」というご相談をいただいた。
そういえば大昔にキャリアでメール関連プロダクト担当なんてことをやってたなぁ,とおもいつつもとりあえずphpで簡単な送信スクリプトを書いてみた。
<?php
mb_language(“Japanese”);
mb_internal_encoding (“UTF8″);
ini_set(‘display_errors’, false);
@ob_start();$k = 0;
$body = “test”;while( $k < 500 ) {
$body .= “TESTn”;
$k = $k +1;
}$i = 0;
while( $i < 40 ){
mb_send_mail( “hugahuga@docomo.ne.jp”,”TEST”,$body,”From: root@voodoomarketing.net”);
$now = microtime(true);
print $now.”n”;
$j = 0;
while ( $j < 8000) {
$j = $j + 1;
}
$i = $i + 1;
}
?>
コマンドラインでphpを走らせるにはyum install php-cliとかやればいい筈。で、こんな感じで。
/usr/bin/php test.php
このスクリプトでは、同じアドレスに40通の”TEST”が500回繰り返された(改行コードも入れて、3KByteってことだね)を送りつけるようになっている。1通送りつけた後に足し算を8,000回やって「待ち時間」を作ってスパムフィルタをかわそう、というしかけ。なんで8,000かっていうと、僕のサーバーで秒速3通を目指して調整した結果だ。
待ち時間を作るところでは、こういうプリミティブなやりかたではなくてmicrotimeを使って「秒速何通」をコントロールして上げた方がいいだろう。じゃぁお前書けよって話だが、そういうお前が書けよ,って話でもある。
秒速3通で送っていけば時速1万通強でいけるので、中小のコンテンツプロバイダさんであれば、こんな感じのスクリプト+オフィス設置のサーバで充分間に合うはずだ。後は…エラーハンドリングとか、テスト送信とか、送信エラーの起きたアドレスを取り除くためのログ解析とか、か。
パッケージにしてアプライアンスにすればいいかな?