2000.03.20 初出
2000.11.15 更新
リリース 説明 1.0 2000/03/20 : 初公開。 1.0a 2000/10/29 : 宛先ファイルによる大量送信でbsendm が固まる不具合修正。送信間隔を指定する機能追加。 1.1 2000/11/03 : qmail-queue指定のとき、デフォルトの送信間隔を0にしました。 1.2 2000/11/15 : インタラクテブオプション。1つのSMTPコネクションですべて送信を行うように修正 (BSendMail2関数コール)。
$ make bsendm bsendm.cc をコンパイル $ su エラーが出なかったら root ユーザになります # make bsendm-install /usr/local/bin に bsendm をコピー
bsendm [-i] [-c] [-v] [-s] [-e] [-t] [パラメータファイル] -i オプション インタラクテブオプション。上記のように画面に進捗状況を表示します。 -c オプション 1通ごとに毎回SMTPコネクションを張ります。ローカルでこれを指定すると inetd に負荷がかかりサービスを10分間停止することがあります。 qmail-queueを使う場合は、無視されます。 -v オプション ログを標準出力に書き込みます。 -s オプション -s オプションは、本文中の 文字列 "%1" を宛先ファイルで 指定した置換え文字列で置換えます。 宛先別に本文の一部を変更したいときに便利です。 "%1" を送信するには "%%1" と指定します。 置換え文字の中にはタブや改行は含むことはできません。 本文中で%2を使うとその位置にテキストファイルの 内容を挿入できます。タブや改行を含んだ大量のデータを 置換えるには 本文中で %2 を指定します。 -sオプションを使ったときの宛先ファイルの内容 1行目 宛先メールアドレス名[TAB]置換え文字[TAB]置換えファイル名 2行目 宛先メールアドレス名[TAB]置換え文字[TAB]置換えファイル名 置換え文字やファイル名を省略すると 本文中の%1 や %2 は削除 されます。 -s オプションを指定するときは本文中に %1 や %2 が 含まれていないか確認します。含まれているときは、 %%1 や %%2 に変更してください。 置換するファイルの内容には %1や%2は含まれていてもかまいません。 -e オプション ログファイル書込み時にログファイルをロックします。 qmail-command などで同時にログファイルを使う場合は指定します。 -t オプション 実際に送信せずに送信内容を確認したいときに使います。 送信内容は、ログファイルに書きこまれます。置き換え文字のテストに便利です。 パラメータファイル パラメータファイルの内容は、次のように指定します。 1行目 ログファイル名 (追加書きこみ。先頭に">"を付けると新規作成モード)[TAB]送信結果通知メールID /dev/null と指定するとログを書きません。 -e オプションでログファイルを書込み時にロックします。 2行目 SMTPサーバIPアドレス名 ローカルのqmail を使う場合は、qmail-queueの実行バイナリのフルパスを指定します。 IPアドレスを指定します。サーバ名を指定するとコネクトに失敗しますので注意。 3行目 宛先メールアドレス名(複数の場合、タブで区切る) または 宛先ファイル名、または BCCファイル名 ${環境変数}の形式で環境変数を参照できます。qmail-command で便利。 例: ${SENDER} 4行目 送信元メールアドレス名 5行目 件名 6行目 添付ファイル名(複数の場合、タブで区切る) 7行目以降 本文 パラメータファイル名を省略すると標準入力からパラメータを読み込みます。 パラメータファイルに日本語を含む場合は、EUC コードのみを 使ってください。 パラメータファイル内の本文以外で1桁目が '#'の行は、 コメントとして無視されます。 送信結果をメールで通知するには、ログファイル名の後にタブで区切ってメールID を 指定します。 件名や添付ファイルを省略するには改行のみ指定します。 宛先メールアドレス名の先頭が'.'か'/'の場合は、宛先ファイルとみなします。 宛先ファイルを1行ずつ読んで宛先を取り出します。 -sオプションを使うときは、宛先ファイルを使います。 宛先ファイル 宛先ファイルの内容は、次のように指定します。1桁目が '#'の行は、 コメントとして無視されます。この宛先メールアドレスごとにメールサーバと接続します。 1行目 宛先メールアドレス名1 2行目 宛先メールアドレス名2 3行目 宛先メールアドレス名3 n行目 宛先メールアドレス名n BCCファイルモード BCCで大量にメールを送信するには、宛先メールアドレスの代わりに BCCファイルを指定できます。宛先ファイルと違い、メールサーバとの接続は、 1回なので高速です。このとき、To: ヘッダは、最初に @ を指定すると 任意の文字が To: ヘッダに使用できます。 hoge@hege.com [tab] >#bcc ./bcc.txt @BASP21-MLIST [tab] >#bcc ./bcc.txt 送信単位指定 -c オプションを使わない限り、1度のSMTPコネクションで全てのメールを連続配信します。 メールサーバによっては、長時間のコネクションを嫌うかもしれません。 これを複数のSMTPコネクションに分割したい場合は、次のようにします。 SMTPサーバIPアドレス名[tab]コネクション間隔時間[tab]送信単位 例:500通ごとに10秒置いてSMTPコネクションを張る場合は: 127.0.0.1[tab]10[tab]500 起動例: インタラクティブモードで起動。 bsendm -i p1.txtパラメータファイルのサンプル
●例1: mailaddr.txt ファイルを読み、宛先ごとにqmail-queueを使って高速送信します。 ~/log.txt /var/qmail/bin/qmail-queue ~/mailaddr.txt ほげ<hoge@hoge.com> subject こんにちは、 ●例2: mailaddr.txt ファイルを読み、宛先ごとに送信します。 メールサーバとのSMTPコネクションは、1000通ごとに60 秒間隔で行います。 ~/log.txt 127.0.0.1 60 1000 ~/mailaddr.txt ほげ<hoge@hoge.com> subject こんにちは、 ●例3: bcc.txt ファイルを読み、BCCとして一括送信します。To: ヘッダは、BASP21-USER。 ~/log.txt 127.0.0.1 @BASP21-USER [tab] >#bcc ~/bcc.txt 管理人<hoge@hoge.com> subject こんにちは、 ●例4: qmail-command を使ってメールが到着したらメールを送信者に送信します。 ~/log.txt 127.0.0.1 ${SENDER} @BASP21-USER [tab] >#bcc ~/bcc.txt 管理人<hoge@hoge.com> subject こんにちは、 ~alias/.qmail-ext ファイルに次のように | コマンドを指定します。 |/usr/local/bin/bsendm -e ~alias/para.txt
<HTML><HEAD> <TITLE>bsendm - SendMail test</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=EUC-JP"> </HEAD> <BODY> <?php $ipaddr = getenv("REMOTE_ADDR"); if (substr($ipaddr,0,7) <> "192.168") { echo "access denied. $ipaddr"; exit; } $post = " $ipaddr <FORM action=sendmail.php3 method=post> to:<input type=text size=30 name=mailto value=\"$mailto\"><br> from:<input type=text size=30 name=mailfrom value=\"$mailfrom\"><br> subject:<input type=text size=30 name=subject value=\"$subject\"><br> body:<textarea name=body rows=10 cols=80 value=\"$body\"></textarea> <BR><input type=submit value=SendMail> <input type=reset value=Clear> </form> "; if (!isset($HTTP_POST_VARS)) { echo $post; } else { if ($mailto == "") { echo "input mailto<br> $post"; exit; } if ($mailfrom == "") { echo "input mailfrom<br> $post"; exit; } if ($subject == "") { echo "input subject<br> $post"; exit; } if ($body == "") { echo "input body<br> $post"; exit; } $files = ""; $fp = popen("/usr/local/bin/bsendm","w"); fputs($fp,"/tmp/maillog.txt\n/var/qmail/bin/qmail-queue\n$mailto\n"); fputs($fp,"$mailfrom\n$subject\n$files\n$body\n"); pclose($fp); echo "<font color=red>"; echo "mailto:$mailto mailfrom:$mailfrom subject:$subject"; echo "</font>"; echo $post; } ?> </BODY> </HTML> |