フリーメール・サポート掲示板
|
[272] フォームメールでの利用 | Name: yuka Date: 03/12 01:22初めまして。こちらのフリーメールを使用させて頂いています。 どうもありがとうございます。
実はサイトにメールフォームを設置して、CGIを経由してメール受信するようにしていたのですが、気が付けばそれが機能しなくなっていました。 スパムメールの都合で、sendmail経由は全て削除しているということでしょうか? 通常のメールでは以前のように受信出来ます。 フォームメールも問題ないようで、転送先を他のアドレスにすれば届きます。
他に要因がある、又は対処法があるようでしたら、御教授お願いします。
返信する |
[279] Re:フォームメールでの利用 | Name: ぜんの (HOME) Date: 03/12 00:38spam対策でブロックされているかと思います 正常に届いていたときのメールヘッダーを含む 全文を見せて下さい、原因を調べます。
返信する |
[281] Re:フォームメールでの利用 | Name: yuka Date: 03/12 01:32返信ありがとうございました。 ヘッダ含む内容を・・・ということなので、メールフォームより内容を送信させていただきました。
それから、不要な報告かもしれませんが、XREAというサーバー(メールフォーム)でも試した処、こちらは問題なく届きました。 当然のようにこの掲示板でも [□レスが付けば上記のEmailアドレスにメールで知らせる] 機能で無事に届きました。
どうやら私の借りているサーバーが例外サーバーだったようで・・・。 ご面倒をお掛けします。
返信する |
[290] Re[2]:フォームメールでの利用 | Name: ぜんの (HOME) Date: 03/12 21:57メールにて回答いたします。
返信する |
[295] Re[3]:フォームメールでの利用 | Name: yuka Date: 03/13 00:18こんばんは。お世話になっております。 フォームメール問題のyukaです。
実はメールの仕組み(プログラム)を理解していないので、 善野様の回答内容も理解出来ませんでした。 折角教えていただいたのにすみません。
> SENDERアドレスを指定出来ていない
この段階で既に理解不能でした。 取り敢えず
> From:nomail@xxx.xxx で送信しているつもりでしょうが > サーバーに対してはMAIL FROMを名乗っていないのWebサーバーが > 既定のnobody@ns.i-paradise2.jpをつけて送信してくる
ということで、CGIプロブラムの
# メールアドレスがない場合はダミーに置き換え if ($in{'email'} eq "") { $email = 'nomail@xxx.xxx'; } else { $email = $in{'email'}; }
の部分のnomail@xxx.xxxを使用出来るメールアドレスに 書き換えたりもしたのですが、結果は同じく届きませんでした。
> CGIプログラムを見直すなど
の、言葉から、「サーバーに非常に迷惑な状態」とのことで恐縮ですが、 KENT WEB さんのフォームメールを利用していたので、 他のCGI CGI RESCUE http://www.rescue.ne.jp/ (フォームメールCGI) GNB http://www.gnbnet.com/ (フォームメールCGI) CGIリンク集管理システム T-BookmarkPlus
も試させて頂きましたが不可能でした。
私の出来る範囲では 「nobody@ns.i-paradise2.jp」 から逃れることは出来ないようです。
sendmailでの利用は諦めることにします。 どうもありがとうございました。
返信する |
[298] Re[4]:フォームメールでの利用 | Name: ぜんの (HOME) Date: 03/13 12:03サーバーに負担がかかるのは そのメールの受け取り先つまり、こちらで発行の yukaさんのフリーメールが容量オーバーなどで 受け取れない場合に(共用サーバーでしょうから他のユーザーのせいかも知れません。)nobody@ns.i-paradise2.jpとの間で エラーメールのピンポンになるのが問題なのです。 たとえMAIL FROMがnobody@ns.i-paradise2.jpなどでも 大量のエラーメールがピンポンしたりしなければ 拒否対象になったりしなかったのです。 具体的なWebサーバーの環境と使用するCGIのダウンロードURLをメールで結構ですから教えていただけば。 プログラムの修正方法を考えて見ます。 一般に公開されているフリーCGIなどではどんな Webサーバーの環境下でもある程度正常に動くように、 精密なオプションの指定をわざとしないようにしているの かも知れませんし、またはメールの送信について詳細な部分まで気になされていないのかもしれません。
返信する |
[299] Re[4]:フォームメールでの利用 | Name: tico Date: 03/13 10:18私はCGIがわからないので、メールソフトを使って送られるフォームメールを使ってます。ブラウザによって送られない場合もありますが、そういう注意書きは書き添えています。趣味のサイトなので、これであまり問題ないです。メールアドレスはぜんのさんとこのフリーアドレスを使っていますよ。
あとはレンタルCGIではなくてレンタルフォームというのもありますがそれでもだめなんでしょうか?
返信する |
[306] 改造方法 | Name: ぜんの (HOME) Date: 03/13 13:29気になったので 少し時間を割いてCGIのソースをみて実験してみました
そういえば昔私も自作のメール送信プログラムを作るときに 他のメールフォームを真似ると自動返信したメールが Yahooメールなどで迷惑メールとして振り分けられる問題が あってそのときに調べたのを思い出しました。
open(OUT,"| $sendmail -t) となっている部分を open(OUT,"| $sendmail -t -f$return") と -f オプションでFROMアドレスを指定すれば大丈夫です。
どんな環境でも使えるかどうかはわかりませんが 普通は大丈夫なはずです。
そんなこと言われてもどこをいじるんだか、わかんなーいと言われるでしょうから で大サービスでこう変更するんだよと言う見本を下記に。 (CGIの作者様が改造する事を許可されているかは調べてませんので注意)
実際に (c)rescue.ne.jp 様の http://www.rescue.ne.jp/cgi/webform/ WebFORM v4.0 is Free. (SJIS仕様) を 変更すると仮定すれば。。。
------------------------------------------------------- 21行目 #■受信先メールアドレス 22行目 $mailto = '送信先Eメールアドレス'; 23行目 24行目 #■名称 -------------------------------------------------------
の部分を
------------------------------------------------------- 21行目 #■受信先メールアドレス 22行目 $mailto = '送信先Eメールアドレス'; 23行目 24行目 #■エラーの戻り先(エンベローブFROMアドレス) 25行目 $return = '送信先Eメールアドレス以外の実在アドレス'; 26行目 27行目 #■名称 -------------------------------------------------------
と変更します また
------------------------------------------------------- 157行目 sub sendmail { 158行目 159行目 if (!(open(OUT,"| $sendmail -t"))) { &error('システ//---行末まで省略(本当はある) 160行目 161行目 print OUT "X-Mailer: WebFORM v4.0 by www.rescue.ne.jp\n"; 162行目 print OUT "X-HTTP_REFERER: $ref\n"; 163行目 print OUT "Errors-To: $mailto\n"; -------------------------------------------------------
を
------------------------------------------------------- 160行目 sub sendmail { 161行目 162行目 if (!(open(OUT,"| $sendmail -t -f$return"))) { &error('システ//---行末まで省略(本当はある) 163行目 164行目 print OUT "X-Mailer: WebFORM v4.0 by www.rescue.ne.jp\n"; 165行目 print OUT "X-HTTP_REFERER: $ref\n"; 166行目 print OUT "Errors-To: $return\n"; -------------------------------------------------------
と変更すれば問題ないことをテストしました。
sendmail に -f オプションが使用可能かは Webサーバーの管理者に聞いてください。 CGIの改造が許可されている範囲かは作者に聞いてください。
返信する |
[309] Re:改造方法 | Name: yuka Date: 03/13 16:52善野さま、CGIの改造方法まで!!! びっくりしました。ありがとうございます。 そこまでして頂いていいのかと・・・本当に恐縮です。
Webサーバー i-パラダイス http://www.i-paradise.nu/pc/ こちらの第二サーバーを使用させてもらっています。
使用するCGI KENT WEB http://www.kent-web.com/ 「データ収集加工」にある、「PostMail」というフォームメールです。
私のサイトアドレスや、現行利用しているCGIでしたらすみません。 その場合は改めてメールにて送ります。
CGIの改造ですが、上記を参考にやってみた処、メールのReturn-Path: が書き換えられて届くようになりました。 webサーバーもとに問い合わせる前にCGI改造したので、あまり誉めれたものでないのですが・・・。 (KENT WEBさんは改造自由・改変不可部分は書いてある・なので、問題ないです) あ、すみません。ここまで書いてから、漸く己の利用しているCGIのバージョンが古いことを思い出しました。(Ver:1.71) 現在はVer: 3.11です。 Ver: 3.11も -f は付け加えられていませんでしたが・・・。
ticoさんレスありがとうございます。 え〜と、実は利用しているのが携帯サイト向けで、普通のメールだけでなくアンケートフォームもあるので、自身で設置するメールフォームが一番便利だったのです。
と。 半端なレスのままで申し訳ありませんが、時間の都合により失礼します。 KENT WEB のCGIの改造場所も一応こちらに記載しておきたいですし、夜か明日、また伺わせていただきます。
返信する |
[310] Re[2]:改造方法 | Name: ぜんの (HOME) Date: 03/13 17:03>webサーバーもとに問い合わせる前にCGI改造したので、あまり誉めれたものでないのですが・・・。 >(KENT WEBさんは改造自由・改変不可部分は書いてある・なので、問題ないです)
CGIの配布元が改造自由ならWebサーバーには改造の許可は取らなくていいでしょうし、 -f オプションも試してみて動くのなら問い合わせる必要もありません。
>Ver: 3.11も -f は付け加えられていませんでしたが・・・。 殆どのFreeCGIで -f は付けられていない様ですね。
多分CGIを作る過程でメールの送信はこうだと覚える 元になる参考図書やサイトの紹介例の殆どが -f 無しだからでしょう。 エラーメール受け取り用のアドレスを別に用意するのは 大変だからとわざと省略させているのか多分そこまで 気にして書かれていないのが現状かと思いますが 他にこれと言った問題点も無いと思いますのでこれからの CGIでメールフォームをプログラミングされる場合の サーバーにやさしい例になれば良いなと思います。
返信する |
[333] 解決しました | Name: yuka Date: 03/15 01:31しつこく書き込み失礼します。
私と同様の問題はそうそうないかと思いますが、一応KENT WEB さんのフォームメールCGIの改造場所も残しておきます。
行数は目安です。(弄ってますので・汗)
229行目 ---------------------------------------------- open(MAIL,"| $mailprog $tempfile -t $mailto -s \"$subject\" -q") || &error("メール送信に失敗しました"); ---------------------------------------------- を ----------------------------------------------open(MAIL,"| $mailprog $tempfile -t -f$return $mailto -s \"$subject\" -q") || &error("メール送信に失敗しました"); ---------------------------------------------- また 277行目 ---------------------------------------------- open(MAIL,"| $mailprog -t") || &error("メール送信に失敗しました"); ---------------------------------------------- を ---------------------------------------------- open(MAIL,"| $mailprog -t -f$return") || &error("メール送信に失敗しました"); ----------------------------------------------
KENT WEB のフォームメールVer:1.71 では、こんな感じでした。 $mailprog はsendmailのパスです。 勿論ぜんのさんが書いていた $return = '送信先Eメールアドレス以外の実在アドレス'; も追加してます。
KENT WEB 以外でも 「sendmailのパスとエラー」を目安に探せばなんとかなるのではないかと。
よくわからないという方は、ぜんのさんが載せていたCGIでどうぞ。
善野様 この度はCGI改造という畑違いなものへの回答までして下さり、本当にありがとうございました。 所々総計な部分もあり、申し訳ありませんでした。 これからもこちらのメールアドレスを愛用させていただきます。
返信する |
レッツPHP! |