「send まね〜る」のインストール。
Windows 上に、UNIX マシンで動いていたメールフォーム CGI 等をなるべく手をかけずに移植したいので、Windows で動作する sendmail 互換ソフトである「send まね〜る」をセットアップしてみる。(ちなみに、コマンドとしての sendmail 互換なだけで、デーモン機能はない。だから SMTP サーバ機能は別途必要(ま、今回は Windows 標準搭載の SMTP サービスを利用ということで))
http://hypweb.net/xoops/modules/mydownloads/viewcat.php?cid=1 から、最新バージョンを落としてくる。(2004/10/20 現在の最新版は sendm098.zip)
sendm098.zip を解凍すると、sendm というフォルダが出来るので、その中の sendmane.exe を、sendmail.exe という名前に変更する。
sendmail.exe を実行すると、コマンドプロンプトが開き、初期設定が始まる。
******** sendまね〜る * 初期設定 *********
[ ]内は、現在の値です。変更のない時は
[Enter]だけを押してください。
SMTPサーバのアドレス?(IPを奨励)
[]:127.0.0.1
SMTPポート番号?(通常は25)
[25]:<改行のみ>
送信者のメールアドレスとは、SMTPサーバとの
(接続)通信時に使用されるメールアドレスです。
通常、受信者は知ることができません。
SMTPサーバによっては、メールアドレスにより
接続を許可しているところがありますので
その場合は適切なアドレスを設定してください。
-sf オプション使用時には、このアドレスが
ヘッダのFrom: 行にセットされます。
送信者のメールアドレス?
[]:shinoda@netandfield.com
送信者の名前は、-sf オプション使用時に
ヘッダのFrom: 行に設定される名前です。
-sf オプションを使用しない場合は、
この設定内容は使用されません。
送信者の名前?
[]:SHINODA Masanori
POP before SMTPの使用 Yes=1 No=0 ?
[0]:1
POP3サーバのアドレス?(IPを奨励)
[]:202.232.129.110
POP3サーバのポート番号?(通常は110)
[110]:<改行のみ>
POP3サーバのユーザー名?
[]:shinoda
POP3サーバのパスワード?
[]:hogehoge
設定が完了しました。
修正するには -init オプションで起動してください。
何かキーを押すと終了します。
・・・で、設定は終了
sendmail.exe と sendmail.ini(今の設定作業で生成されたもの)を c:\usr\sbin の下へコピー。(UNIX っぽく)
で、c:\usr\sbin にパスを通しておく。
(システムのプロパティの環境変数設定画面から、環境変数 path を編集する)
パスを通したら、試しに「send まね〜る」についてくるテストデータを使って、自分宛にメールしてみる。(コマンドプロンプトより)
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.
C:\Documents and Settings\shinoda>x:
X:\>cd \data\download\archives\pg\sendm
X:\data\download\archives\pg\sendm>type sendtest.txt|C:\usr\sbin\sendmail shinoda@netandfield.com
sendmane.exeでエラーを検出しました。
Error: 550 5.7.1 Unable to relay for shinoda@netandfield.com
ありゃりゃ。エラーが出てもうたがな。
何か、relay 出来ないって言われているので、これは SMTP サービスの設定がちゃんと出来てないからか。外部への relay はディフォルトで止められているのかな?
踏み台防止のために当たり前のことだけど、Windows でそういう考慮がちゃんとされているとちょっと感動じゃのお。ただし、Local User からの外部への relay は許しておくべきじゃろう。どうも、最後の詰めが甘いのお、Microsoft 。
つーことで、sendmail.ini を修正して、外部の(POP before SMTP 対応の)サーバを使うことにする。
[SMTP]
Host=127.0.0.1
↓
Host=182.212.212.15(例えば、プロバイダのメールサーバ)
とする。で、試しに送ってみる。
X:\data\download\archives\pg\sendm>type sendtest.txt|C:\usr\sbin\sendmail shinoda@netandfield.com
X:\data\download\archives\pg\sendm>
よし、今度はエラーが出ずに終了したぞ!!
↓メールもちゃんと届いていた。
From: Sendまね〜る <web-master@hypweb.net>
Subject: Sendまね〜るの送信テストです。
Date: Wed, 20 Oct 2004 19:42:12 +0900
このメールが届けば、Sendまね〜るは正常にセットアップされています。
CGIから利用して、メール送信が正しく処理されない場合は、CGI側の sendmail設定
をご確認ください。
○本ソフトウェアのサポート方法は、現在は次のようになっています。
・感想やバグ報告などは、Webページに設置した
「sendまね〜る 要望・バグレポート」で受け付けています。
メールでのお問い合わせはご遠慮ください。
・ホームページURL: http://hypweb.net/
・フォーラム Sendまね〜る:
http://hypweb.net/xoops/modules/newbb/viewforum.php?forum=1
以上。
じゃ、今度は、CGI の中からうまく呼び出せるかやってみる。
#!/usr/bin/perl
#
# mail_test.cgi - メールを送信して、結果を表示するだけの CGI
#
$Sendmail = '/usr/sbin/sendmail';
$Mail =<<END_DATA;
To: shinoda\@netandfield.com
From: root\@netandfield.com
Subject: Mail Test
どうですか?
ちゃんと届きましたか?
END_DATA
print "Content-type: text/html\n\n";
if (!open(MAIL,"|$Sendmail shinoda\@netandfield.com")) {
print "<html><body><h1>SYSTEM ERROR</h1></body></html>\n";
exit();
}
print MAIL $Mail;
close(MAIL);
print "<html><body><h1>OK!!!</h1></body></html>\n";
exit();
こういう CGI を、FreeBSD 機で実行すると、無事メールが発信される。
↓ちゃんとメールが届く。
Return-Path: <anonymous@serv2.netandfield.com>
Delivered-To: shinoda@netandfield.com
Received: (qmail 73474 invoked by uid 80); 20 Oct 2004 20:07:19 +0900
Date: 20 Oct 2004 20:07:19 +0900
Message-ID: <20041020110719.73473.qmail@serv2.netandfield.com>
To: shinoda@netandfield.com
From: root@netandfield.com
Subject: Mail Test
どうですか?
ちゃんと届きましたか?
この CGI をそのまま Windows 2000 Server + Apache2 な環境に持ち込むと、Internal Server Error が発生してまともに動かない。
どうしても、ファイルのパス関係は直してやる必要があるのだ。
ということで、
#!/usr/bin/perl
↓
#!c:/usr/local/bin/perl
$Sendmail = '/usr/sbin/sendmail';
↓
$Sendmail = 'c:/usr/sbin/sendmail.exe';
と直して実行してみる。
すると、無事 CGI は実行され、
Return-Path: <shinoda@netandfield.com>
Delivered-To: shinoda@netandfield.com
Received: (qmail 73534 invoked by alias); 20 Oct 2004 20:15:26 +0900
Received: from unknown (HELO 182.212.212.15) (250.128.192.223)
by serv2.netandfield.com with SMTP; 20 Oct 2004 20:15:26 +0900
To: shinoda@netandfield.com
From: root@netandfield.com
Subject: Mail Test
Date: Wed, 20 Oct 2004 20:15:26 +0900
どうですか?
ちゃんと届きましたか?
というメールも届いた。
ということで、「send まね〜る」を使えば UNIX 系サーバから持ってきた sendmail を使用する CGI を、ファイルのパスを書き換えるだけで Windows サーバ上で使用出来るということだ。(もちろん、ファイルパス以外も修正しないといけないケースがあるだろうが、少なくとも sendmail の部分はそのまま(実行体のパスを正しく設定するだけで)使えそうということ。)
|
|