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>
|