Apple の脅威の通知と金銭目当てのスパイウェアへの対策について

しばらく返答が寄せられていないようです。 再度ディスカッションを開始するには、新たに質問してください。

外部のSMTPサーバーにバックグラウンドで自動的にメールを送信

シェルスクリプトを使って,バックグラウンドで定期的にメールを自宅に送信したいのですが,どのプログラムをどのように設定して,どのようなスクリプトを書けばよいのか,わかりません。
どなたか,漠然としたイメージでも(できたら詳しく)教えていただきたくお願いします。

投稿日 2002/11/16 12:29

返信: 4

2002/11/17 12:29 Community User への返信

Seiji.Suzuki です。
まず、定期的な実行ですが、これはシェルスクリプトを常時走らせておいてシェルスクリプト自身に時間管理をさせるという方法と cron に時間管理をさせるという方法があります。前者の場合はシェルスクリプト単体で動作し、他に設定はいりませんが、何かの拍子に動作が止まるとそのまま止まりっぱなしです。例えばこんな感じ。
--------
#! /bin/sh
while true; do # 永久ループ
cat mail.txt | /usr/sbin/sendmail -t # メール送信
sleep 1800 # 約 30 分ごと
done
--------
cron を使う場合は crontab -e とすると環境変数 EDITOR で指定しているエディッターが起動して自分の crontab を編集できるようになります。ここで例えば
--------
0,30 * * * * /Users/seiji/bin/mail.sh
--------
と指定しておくと毎時 0 分と 30 分に /Users/seiji/bin/mail.sh を起動しますからここにメール送信のスクリプトを書いておけばいいです。ただし、cron から起動されたプロセスはほとんど何の環境変数も設定されない状態で起動されますから使用する可能性のある環境変数は PATH も含めてスクリプト内で設定しておいた方が無難です。他にはシェルスクリプトから at コマンドを使用する方法もあります。
--------
#! /bin/sh
while true; do
cat mail.txt | /usr/sbin/sensmail -t
echo $a | at +30min
done
--------
みたいな。
メールを送信する方法は上でもちょっと書きましたが、sendmail がちゃんと設定されているのなら sendmail にメールをパイプすればそれで送信されます。ただし、漢字コードは JIS に変換するなど規格に沿った変換が必要です。上記のように sendmail に -t オプションをつけるとメール本体中の From: などが有効になります。その代わりにこれらヘッダーと本文の間には空行が一つ必要になります。
--------
From: Seiji.Suzuki@hoge.huge.hage
Cc: Seiji.Suzuki@hoge.huge.hage
To: Kazuhiko.Maruyama@foo.bar.baz
これが定期的に送信するメールの本文で〜す。
--------
以上、簡単ですが。なお、一つも試さずに書いているので間違っているところもあるかもしれませんが適当に調べ直してやってみて下さい。
ではでは。

2002/11/17 12:31 Community User への返信

Seiji.Suzuki です。
まず、定期的な実行ですが、これはシェルスクリプトを常時走らせておいてシェルスクリプト自身に時間管理をさせるという方法と cron に時間管理をさせるという方法があります。前者の場合はシェルスクリプト単体で動作し、他に設定はいりませんが、何かの拍子に動作が止まるとそのまま止まりっぱなしです。例えばこんな感じ。
--------
#! /bin/sh
while true; do # 永久ループ
cat mail.txt | /usr/sbin/sendmail -t # メール送信
sleep 1800 # 約 30 分ごと
done
--------
cron を使う場合は crontab -e とすると環境変数 EDITOR で指定しているエディッターが起動して自分の crontab を編集できるようになります。ここで例えば
--------
0,30 * * * * /Users/seiji/bin/mail.sh
--------
と指定しておくと毎時 0 分と 30 分に /Users/seiji/bin/mail.sh を起動しますからここにメール送信のスクリプトを書いておけばいいです。ただし、cron から起動されたプロセスはほとんど何の環境変数も設定されない状態で起動されますから使用する可能性のある環境変数は PATH も含めてスクリプト内で設定しておいた方が無難です。他にはシェルスクリプトから at コマンドを使用する方法もあります。
--------
#! /bin/sh
while true; do
cat mail.txt | /usr/sbin/sensmail -t
echo $0 | at +30min
done
--------
みたいな。
メールを送信する方法は上でもちょっと書きましたが、sendmail がちゃんと設定されているのなら sendmail にメールをパイプすればそれで送信されます。ただし、漢字コードは JIS に変換するなど規格に沿った変換が必要です。上記のように sendmail に -t オプションをつけるとメール本体中の From: などが有効になります。その代わりにこれらヘッダーと本文の間には空行が一つ必要になります。
--------
From: Seiji.Suzuki@hoge.huge.hage
Cc: Seiji.Suzuki@hoge.huge.hage
To: Kazuhiko.Maruyama@foo.bar.baz
これが定期的に送信するメールの本文で〜す。
--------
以上、簡単ですが。なお、一つも試さずに書いているので間違っているところもあるかもしれませんが適当に調べ直してやってみて下さい。
ではでは。

2002/11/18 03:34 Community User への返信

ありがとうございます。cronなどで,自動実行すればよいという事は,ある程度調べがついていたんですが,一番の問題は,メーラーの設定なのでした。sendmailについて,いろいろ調べはしましたが,大体がサーバーとしての用途で,純粋にクライアントとして,メールが送れさえすればよいという私の目的に合致した情報が
見当たらなく(しかも難解!!),ここで質問させていただいた次第なのです。
telnetで手動で,smtpに接続する事は出来るのですが,これをスクリプトを書いて,定期的に実行したいのです。
スクリプトの中にSMTPとのやり取りを直接書いたり(**?)して見たんですが,うまくいくわけないですね。何の設定もしていませんもの。
そのあたりをもう少し詳しく教えていただけたら素晴らしいです。
こんなホームページあるよという情報だけでも結構ですので!

2002/11/26 12:21 Community User への返信

あ〜ごめんなさい。忘れてました(すっかり!)。というわけでこんなんやってみて下さい。
( echo "HEAD / HTTP/1.0,," | tr ',' '¥n' ; sleep 1 ) | telnet localhost 80
とはいえ、telnet とか ftp のようなインタラクティブなコマンドをシェルスクリプトから使う際の動作については何の規定もありません。従って動くかどうかの保証は全くないのですが、よくある手口ではこんな風に使います。ほかに mkfifo で作った名前付きパイプを使う事もあります。sleep 1 というのは telnet が端末をリセットするのでそれをやり過ごすための時間稼ぎです。厳密に言うとリアルタイム OS ではないのでこれがいつも確実に動くと言う保証はありません(めちゃくちゃ高負荷だったり相手の応答のタイミングが合わなかったりするとだめ)。

外部のSMTPサーバーにバックグラウンドで自動的にメールを送信

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple ID を使ってご参加ください。