Cygwin なんでも掲示板

一覧最新記事過去一覧 | 検索FAQアンテナHOME
(新規投稿・発言はできません)


スレッド

└◇1358:
Cygwinで外部にメールを送信するには? [naru] 07/24 12:14

 └◇1359:Re:Cygwinで外部にメールを送信するには? [sugi3!] 07/24
  └◇1362:Re[2]:Cygwinで外部にメールを送信するには? [naru] 07/25
   ├◇1363:Re[3]:Cygwinで外部にメールを送信するには? [sugi3!] 07/25
   │└◇1364:Re[4]:Cygwinで外部にメールを送信するには? [naru] 07/25
   └◇1365:Re[3]:Cygwinで外部にメールを送信するには? [kotaro] 07/26
    └◇1366:Re[4]:Cygwinで外部にメールを送信するには? [nil] 07/26
     └◇1369:Re[5]:Cygwinで外部にメールを送信するには? [k-squar] 07/31
      └◇1370:Re[6]:Cygwinで外部にメールを送信するには? [k-squar] 07/31
       └◇1371:Re[7]:Cygwinで外部にメールを送信するには? [nil] 07/31
        └◇1373:Re[8]:Cygwinで外部にメールを送信するには? [naru] 08/05
         ├◇1376:Re[9]:Cygwinで外部にメールを送信するには? [MSだす。] 08/07
         │├◇1385:シェルについて [hi-6] 08/14
         │└◇1386:Re[10]:Cygwinで外部にメールを送信するには? [hi-6] 08/14
         │ └◇1387:Re[11]:Cygwinで外部にメールを送信するには? [nil] 08/14
         │  └◇1390:Re[10]:Cygwinで外部にメールを送信するには? [hi-6] 08/14
         │   └◇1392:Re[11]:Cygwinで外部にメールを送信するには? [nil] 08/14
         │    ├◇1395:Re[12]:Cygwinで外部にメールを送信するには? [hi-6] 08/15
         │    └◇1396:Re[12]:Cygwinで外部にメールを送信するには? [nil] 08/15
         └◇1389:Re[9]:Cygwinで外部にメールを送信するには? [nil] 08/14
          └◇1391:Re[10]:Cygwinで外部にメールを送信するには? [hi-6] 08/14
           └◇1459:Re[11]:Cygwinで外部にメールを送信するには? [naur] 09/06 <


1358● Cygwinで外部にメールを送信するには?[ naru ] 2003 07/24 12:14
Win2kにcygwin1003.22.0.0をフルインストールしました。

外部にメールを
$ echo "messages"| mail -s "title" foo@isp.co.jp
として送信したいのですが

$ which mail
mail:Command not found
ととなってしまいます。
因みに
$ ls -l /bin | grep mail
-rwxrwxrwx 1 Administ Users 660992 May 4 06:28 dmail.exe
-rwxrwxrwx 1 Administ Users 187904 Mar 6 08:35 fetchmail.exe
-rwxrwxrwx 1 Administ Users 74986 Mar 6 08:35 fetchmailconf
-rwxrwxrwx 1 Administ Users 25088 Aug 19 2002 formail.exe
-rwxrwxrwx 1 Administ Users 1753 Nov 17 2001 mail-files
lrwxrwxrwx 1 Administ Users 15 Jul 13 23:09 mailq -> exim
-rwxrwxrwx 1 Administ Users 2132 Nov 17 2001 mailshar
-rwxrwxrwx 1 Administ Users 5859 Aug 19 2002 mailstat
-rwxrwxrwx 1 Administ Users 663040 May 4 06:28 mailutil.exe
-rwxrwxrwx 1 Administ Users 61952 Aug 19 2002 procmail.exe
-rwxrwxrwx 1 Administ Users 664064 May 4 06:28 tmail.exe

となっていました。一体どうすればメールを送信できるのでしょうか?
スレッド一覧


1359● Re:Cygwinで外部にメールを送信するには?[ sugi3! ] 2003 07/24 15:00
フルインストールした時点で何の設定もなしに即メイルが
送れると思うのは早計です(^^;)。smtp サーバの指定とか、
自ドメインの指定などなどした覚えないですよね?

メイルの送信には ssmtp を使います。使う前に、
ssmtp-config コマンドで /etc/ssmtp/ssmtp.conf を
作っておきます。

ssmtp はメイルハブに転送するだけの sendmailです。
MTA なので、mail コマンド的な使い方はできません
(ssmtp -t = sendmail -t です。こういう使い方は CGI で
良く見ます←言わんとすることわかっていただけます?)。

フルインストールされたなら、exim が入っているはずで、
これが多分色々と使えるかもですが、私は exim 自体
使ったことないので設定とかわからないです。
スレッド一覧


1362● Re[2]:Cygwinで外部にメールを送信するには?[ naru ] 2003 07/25 02:29
> フルインストールした時点で何の設定もなしに即メイルが
> 送れると思うのは早計です(^^;)。smtp サーバの指定とか、
> 自ドメインの指定などなどした覚えないですよね?
はい、
取り敢えず、DDNSでhoge.dyndns.netを取得しました。

> メイルの送信には ssmtp を使います。使う前に、
> ssmtp-config コマンドで /etc/ssmtp/ssmtp.conf を
> 作っておきます。
$ grep -v ^# /etc/ssmtp/ssmtp.conf
root=postmaster
mailhub=hoge.dyndns.net
hostname=hoge.dyndns.net

としてみました。

> ssmtp はメイルハブに転送するだけの sendmailです。
> MTA なので、mail コマンド的な使い方はできません
> (ssmtp -t = sendmail -t です。こういう使い方は CGI で
> 良く見ます←言わんとすることわかっていただけます?)。
つまり、コマンドライン上ではメール送信は出来ないという事ですか?

> フルインストールされたなら、exim が入っているはずで、
> これが多分色々と使えるかもですが、私は exim 自体
> 使ったことないので設定とかわからないです。
そうですか。。。
スレッド一覧


1363● Re[3]:Cygwinで外部にメールを送信するには?[ sugi3! ] 2003 07/25 10:10
> つまり、コマンドライン上ではメール送信は出来ないという事ですか?

できます。たとえば、hoge.txt を以下のような感じで作ります。

-----< ここから
From: sugi3! <cedar@tiyu12.ne.jp>
To: foo <foo@bar.baz>
Subject: [TEST]

Hello!
-----< ここまで

で、
$ cat hoge.txt | ssmtp -t
で送れます。
スレッド一覧


1364● Re[4]:Cygwinで外部にメールを送信するには?[ naru ] 2003 07/25 12:23
ありがとうございます。


> で、
> $ cat hoge.txt | ssmtp -t
> で送れます。
$ cat hoge.txt | ssmtp -t
-bash: ssmtp:command not found
$ cat hoge.txt | /usr/sbin/ssmtp -t
/usr/sbin/ssmtp: can't open the ssmpt (25) on hoge.dyndns.net.

となってしまいます。
これはどう対処したらいいのでしょうか?

/etc/hosts.allowを
ALL:ALL
にしてみしたのですがダメでした。
スレッド一覧


1365● Re[3]:Cygwinで外部にメールを送信するには?[ kotaro ] 2003 07/26 18:25
> root=postmaster
> mailhub=hoge.dyndns.net
> hostname=hoge.dyndns.net
>
> としてみました。
>

私のメールアドレスが kotaro@hoge.com であると仮定します

root=postmaster
#メールサーバの名前
mailhub=smtp.hoge.com #←ここがミソ
#メールアドレスの "@" より後ろ
hostname=hoge.com
FromLineOverride=YES

Muttから使っているので、直接ssmtpしたことはありません
こんな感じで使っています
スレッド一覧


1366● Re[4]:Cygwinで外部にメールを送信するには?[ nil ] 2003 07/26 20:30
ひょっとして、ssmtp は sendmail等の置き換えでなく、例えば、契約
プロバイダなどへの smtp接続の中継役にすぎないもの、というのを理
解してないのでは? というかドキュメントではわからなかったのかな?

別の話になりますが、スクリプトでmailを送ろうとしてする人の中でも
かなりの数で、漢字のコードやヘッダの符号化の規格や問題を知らない
ままに、相手にも失礼なmailを送っている場合が少なくないので、充分
に気をつけてくださいね。

というわけで、私は、ちゃんとお教えできる自信はありませんです。
すいません。
スレッド一覧


1369● Re[5]:Cygwinで外部にメールを送信するには?[ k-square ] 2003 07/31 01:56
/usr/sbim/sendmail → ssmtp
のシンボリックリンクがはられているという前提で書いてますが、
以下のような形で書けば script から送れるんじゃないかと思います。
参考にどうぞ。


(
echo "To: \"あてさき\" <to-mailaddress@subdomain.sld.tld>" | nkf -M
echo "Subject: さぶじぇくと" | nkf -M
echo "MIME-Version: 1.0"
echo 'Content-Type: text/plain; charset="ISO-2022-JP"'
echo -e "Content-Transfer-Encoding: 7bit\n"
echo "ほんぶんだよ。"
) | nkf -J -m0 | /usr/sbin/sendmail -F "`echo 'おくりぬし' | nkf -M `" -f "from-mailaddress@subdomain.sld.tld" to-mailaddress@subdomain.sld.tld

http://www.hh.iij4u.or.jp/~k-square/

スレッド一覧


1370● Re[6]:Cygwinで外部にメールを送信するには?[ k-square ] 2003 07/31 02:04
あ・・・。修正です。

| nkf -J -m0 |

の部分は

| nkf -j -m0 |

デス・・・。

http://www.hh.iij4u.or.jp/~k-square/

スレッド一覧


1371● Re[7]:Cygwinで外部にメールを送信するには?[ nil ] 2003 07/31 17:18
ううむ、例を挙げるならば、この script をもし Shift-JIS で書いた
なら、使った文字によっては正常に実行できない場合がある(2nd byte
目がメタキャラクタ?)事も、ことわりがあった方が良いような…

だから自力で調べられる人はいいんですけどね。

nkf では大丈夫ですが、中身がsjisな符号化の spmaもどきが来ること
もあったので、やはり私は手取り足取りになるのが怖くて。

# 私の趣味的には… 作成と送信は安全の為分ける
# ( echo ... | nkf -M; ... ) ==> { echo ...; ...; } | nkf -M
# echo -e "...\n" ==> echo "..."; echo ""
スレッド一覧


1373● Re[8]:Cygwinで外部にメールを送信するには?[ naru ] 2003 08/05 21:49
なかなか自宅に戻れずご紹介いただいた方法を試せず遅くなっしまいました。
大変申し訳ありませんでした。

> root=postmaster
> #メールサーバの名前
> mailhub=smtp.hoge.com #←ここがミソ
> #メールアドレスの "@" より後ろ
> hostname=hoge.com
> FromLineOverride=YES
root=postmaster
mailhub=smtp.isp.co.jp #←ISPのSMTPサーバ
hostname=foo.dynsite.net #←DDNSで取得した本マシンのホスト名
FromLineOverride=YES

として
$ cat test.txt
From: naru@foo.dynsite.net
To: hoge@isp.co.jp
Subject: test
This is test.
$ cat test.txt | /usr/sbin/ssmtp -t
で漸く送信できました。どうもありがとうございます。
でも届いたメールを見てみるとサブジェクトはありましたが
メッセージ「This is test.」だけが無いんですよね。
これはどうしてなんでしょうか?

すいません。最後に後1つ。
実は今回は自作スクリプトの出力結果をcygwinを利用して送信したくて投稿したのですが$ myscipt.sh | /usr/sbin/ssmtp -s "jikken" hoge@isp.co.jp
という風にして取り合えずhoge@isp.co.jp宛に届きました。でも
サブジェクト・メッセージがありません。
text.txtを用意せずにコマンドラインで1行でメール送信するにはどうすればいいのでしょうか?

> 別の話になりますが、スクリプトでmailを送ろうとしてする人の中でも
> かなりの数で、漢字のコードやヘッダの符号化の規格や問題を知らない
> ままに、相手にも失礼なmailを送っている場合が少なくないので、充分
> に気をつけてくださいね。
ご忠告感謝いたします。
送信先は私の仕事先のPC(user01@isp.co.jp)や私の携帯宛なので迷惑はかかりません。
尚、メッセージも半角英数のみです(日本語なし)。
スレッド一覧


1376● Re[9]:Cygwinで外部にメールを送信するには?[ MSだす。 ] 2003 08/07 14:34
> $ cat test.txt
> From: naru@foo.dynsite.net
> To: hoge@isp.co.jp
> Subject: test
> This is test.
> $ cat test.txt | /usr/sbin/ssmtp -t
> で漸く送信できました。どうもありがとうございます。
> でも届いたメールを見てみるとサブジェクトはありましたが
> メッセージ「This is test.」だけが無いんですよね。
> これはどうしてなんでしょうか?
ヘッダの一部とみなされたのではないでしょうか?

From: naru@foo.dynsite.net
To: hoge@isp.co.jp
Subject: test

This is test.

という風に空行を入れたらうまくいきませんか?

> すいません。最後に後1つ。
> 実は今回は自作スクリプトの出力結果をcygwinを利用して送信したくて投稿したのですが$ myscipt.sh | /usr/sbin/ssmtp -s "jikken" hoge@isp.co.jp
> という風にして取り合えずhoge@isp.co.jp宛に届きました。でも
> サブジェクト・メッセージがありません。
ssmtpをつかってないのでよくは知りませんが(私自身はnmhを使っているので)-sというオプションは本当にサブジェクトを付けるためのものでしょうか?manページぐらい見ましょう。

> text.txtを用意せずにコマンドラインで1行でメール送信するにはどうすればいいのでしょうか?

メールを作り送信する作業全体をshell scriptにする;-)
スレッド一覧


1385● シェルについて[ hi-6 ] 2003 08/14 07:28
直接回答にはなっていないと思うますが、
コマンドラインで行にまたがって入力するには改行の直前に¥を入れます(つまり¥を入れてからエンター)。改行である\nでコマンドが実行されるのですが、これは;で置き換えることが出来、これだと一行で複数のコマンドを実行できます。
あと、do 〜 doneを使う方法もありこれの間にfor, whileをいれることで繰り返し処理が出来ます。

for BINFILE in $(find / -perm +6000 -follow); do
        if [ "$(grep $BINFILE /etc/splist)" = "" ]; then
        echo $BINFILE | mail -s "New SUID/SGID!" root
        fi
done

これはLinuxの例なのでcygwinでそのまま使えるかどうか確認しておりませんが、基本は同じだと思います。
参考にして下さい。
スレッド一覧


1386● Re[10]:Cygwinで外部にメールを送信するには?[ hi-6 ] 2003 08/14 08:02
すいません。スレッドを崩してしまいました。勘弁して下さい。
ついでに以下を参考にして下さい。私自身cygwinでsendmailは使っていないので、確認できていないのですが、実際Linuxの方で使っているものです。

#!/bin/sh
date=`date`
h=`cat /usr/local/sbin/mail/honnbunn.txt`
sj="サブジェクトです。"
smail () {
{
cat <<EOF
to: $i
Subject: $sj
FROM: mail@xxx.ne.jp
$h
$date
EOF
} | nkf -j | /usr/lib/sendmail -it
        }
while read i; do
if [ "$i" ]; then
smail "$i"
fi
done <"/usr/local/sbin/mail/address.data"
echo $i
echo "$iに送信しました。" >> "/usr/local/sbin/mail/rireki"
echo "$i sent done"
exit


address.dataに一行ずつメールアドレスを入れておけば一度に全部に送信できます。
なお中身の空のファイルは
>newfail.txt
で簡単に作れます。これはcygwinでも確認済みです。
スレッド一覧


1387● Re[11]:Cygwinで外部にメールを送信するには?[ nil ] 2003 08/14 15:35
うう、知らない人がそのまま使うと、問題の出そうな事はやめましょうよ。
これではヘッダーの日本語を MIME化しないで送ってしまいますね。
せっかく前のかたも nkf -M の使い方を例示されているのに。

        M[BQ] MIME encode [B:base64 Q:quoted]

|別の話になりますが、スクリプトでmailを送ろうとしてする人の中でも
|かなりの数で、漢字のコードやヘッダの符号化の規格や問題を知らない
|ままに、相手にも失礼なmailを送っている場合が少なくないので、充分
|に気をつけてくださいね。

|ううむ、例を挙げるならば、この script をもし Shift-JIS で書いた
|なら、使った文字によっては正常に実行できない場合がある(2nd byte
|目がメタキャラクタ?)事も、ことわりがあった方が良いような…
スレッド一覧


1390● Re[10]:Cygwinで外部にメールを送信するには?[ hi-6 ] 2003 08/14 17:56
確かに知らない人がそのまま使うと問題があるかもしれません。その旨指摘しておけばよかったです。これから気をつけます。
なお、テストはまず自分の管理できる環境の範囲内で十分に試してから実用するようにしましょう。
あくまで参考にして頂きたいという気持ちです。シェルの使い方など。自分も以前苦労した経験があるので。
スレッド一覧


1392● Re[11]:Cygwinで外部にメールを送信するには?[ nil ] 2003 08/14 20:21
念の為。

>確かに知らない人がそのまま使うと問題があるかもしれません。
個人的な見解ですが、そのままでは問題があります。
(ヘッダと本文の区切りの問題はともかく、例のままサブジェクトに漢
字を使うと、Subjectに生のJISを使って良いという話を推奨することに
なるので)

>なお、テストはまず自分の管理できる環境の範囲内で十分に試してから実用するようにしましょう。

このような問題では、規格等を知らなければ正しい状態がわからず(規
格があってもはっきりしない話もある)、利用した環境によっては、テ
ストだけでは問題があることにさえ気がつかないままでいてしまう事も
あります。
調査しないで、試すだけで実用にするのはそういう危険もあります。

(いやまあ、使えているならいいじゃない、MIMEでなくても、とか言わ
れると、反論するのも嫌なくらい悲しくなるので)
スレッド一覧


1395● Re[12]:Cygwinで外部にメールを送信するには?[ hi-6 ] 2003 08/15 17:54
nilさん了解しました。詳しく知らなかったけど、
想像以上にいろいろと問題があるようですね。
ところで、このスレッドのテーマはメールの送信ですが、
シェルではなく、perlでスクリプトを組むというのは
いかがでしょうか?
ホームページ上のフォームからのメール送信は以前簡単な
ものを作ったことがあるのですが、シェルの方が簡単に
済むので、たまにそれを使っていました。しかし、いずれにせよ
たびたびファイルから読み込むというのは面倒ですね。
CGIを使うのも危なそうな気もするし。
時間があれば、コマンドラインで送信できるperlスクリプト
を作ってみたいと考えていたのですが。
Ctl+dのシグナルで本文の送信が完了するようなものを
イメージしたことがあります。
cygwinでも大丈夫なのかな?
自分としてはcygwinでのperlの利用は専ら練習や実験のみです。
練習用のディレクトリを作って。リナックスのサーバの方では
掲示板など置いてありますが、まだ勉強中であまり大したことは
できず、広く公開できる代物ではありません。セキュリティも
恐いので。
必要があれば、perlの利用を考えてみるのもいかがでしょうか?
こんな感じで、これも今のところ問題無く動いていますが、
いかがなものでしょうか?
なお、環境はあくまでリナックスです。参考にだけして下さい。
______________________________________________________
#!/usr/bin/perl

require '../lib/cgi-lib.pl';
require '../lib/jcode.pl';

&ReadParse(*in);
$name = "$in{'name'}";
$subject = "$in{'subject'}";
$address = "$in{'address'}";
$body = "$in{'body'}";
$to = 'mail@hi-6.xxx.jp';


$mailName = jcode::jis($name);
$mailSubject = jcode::jis($subject);
$mailBody = jcode::jis($body);

$from = "差出人";
$from = jcode::jis($from);

open(MAIL, "| /usr/lib/sendmail -t");
print MAIL "To: $to\n";
print MAIL "Subject: $mailSubject\n";
print MAIL "Content-type: text/plain;\n\n";
print MAIL "$from : $mailName\n";
print MAIL "you-mail: $address\n";
print MAIL "you make TEXT:\n\n";
print MAIL "$mailBody\n";
close(MAIL);

#$body =~ s/\n\n/\n/g;
#$body =~ s/[\r\n,\n]/<br \/>/g;
$body =~ s/\r\n/<br>/g;
$body =~ s/\r/<br>/g;
$body =~ s/\n/<br>/g;


print "Content-type: text/html\n\n";

各種書籍などさんこうにしました。jcode.plは
有名ですし、ホームページで検索すれば簡単に
入手できると思います。テキストをパスで指定
する場所に置くだけで使えたように思います。
気をつけるのはパーミッションだけ、これもあちこち調べれば
たくさん情報があると思います。
スレッド一覧


1396● Re[12]:Cygwinで外部にメールを送信するには?[ nil ] 2003 08/15 20:19
さすがにとほほな気持ち。

ええと、よい参照先を知らないのですが、

        http://www.mew.org/Newsletters/

あたりの規格の話はすでにご存知でしょうか。

ご存知の上で、いわゆる「生JIS」で Subject を書いても良い、「MIME
化ヘッダー」は必要ないというご意見ならば、何も言えないです。
(私は現状ならばMIMEに従うほうがよい、という考え)

元の質問は ASCIIしか使わないmailだそうなので、別の問題なのですが、
前にも漢字のことで「充分に気をつけてくださいね」と書いたのは、
naru さん宛ではなく、スクリプトがあると不用意に、しかも間違って
使ってトラブルを起こす人を危惧してのことでした。かいは無いけれど。
スレッド一覧


1389● Re[9]:Cygwinで外部にメールを送信するには?[ nil ] 2003 08/14 16:04
mail コマンドではないので、ssmtp で -s は使えません。
ドキュメントをご確認を。

せっかく、いちおう正常に動くスクリプトの例まで示してもらっているのに、
その内容を確かめたり、まねや改造もしないのはもったいなくて残念。
(私は間違ってまねされても困るのでスクリプトを教える自信が無いのですが)
スレッド一覧


1391● Re[10]:Cygwinで外部にメールを送信するには?[ hi-6 ] 2003 08/14 17:59
Linuxとcygwinではいろいろと違いがあるようですね。混乱を生じさせないよう以降発言には気をつけます。
スレッド一覧


1459● Re[11]:Cygwinで外部にメールを送信するには?[ naur ] 2003 09/06 17:59
すっかりレスが遅くなりまして申し訳有りませんでした。
難しいお話が続き、ついてなくなってました。

> From: naru@foo.dynsite.net
> To: hoge@isp.co.jp
> Subject: test
>
> This is test.
>
> という風に空行を入れたらうまくいきませんか?
これで上手くいきました。

>> text.txtを用意せずにコマンドラインで1行でメール送信するにはどうすればいい
> のでしょうか?
> メールを作り送信する作業全体をshell scriptにする;-)
#!/bin/bash -x
echo "From: hoge@sousinsha@isp.co.jp" > ~/address.txt
echo "To: jushisha@isp.ne.jp" >> ~/address.txt
echo "Subject: This is test" >> ~/address.txt
echo >> ~/address.txt

ここに自由にメッセージを~/address.txtにリダイレクト

cat ~/address.txt | /usr/sbin/ssmtp -t
rm -f ~/address.txt

という具合にして漸く望みが叶いました。
ご紹介いただいた他の方法も試してみたいと思います。

どうも有り難うござました。
スレッド一覧

早田のホームページへ
CGIROOM