このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

ファイルメーカーwebのメール送信

発言者:松本
( Date Thursday, September 13, 2001 19:16:54 )


松本です。お世話になっております。
ファイルメーカーでのメール送信についてです。
OCNエコノミーからADSLに変更し、しばらくたちます。

資料請求とか、予約申込をファイルメーカーで作っていて
カスタムWebにて公開しているます。申込みがあったときに、
メールがお客様とこちらの両方にメールが送信されるのですが、
ADSL環境にしてからメールが送信されません。
(それ以前はちゃんと動作していました)

マシン1:202.***.***.1
 ファイルメーカーUnlimited→web(www.aaa.co.jp)
 PrimaryDNS

マシン2:202.***.***.2
 WebSTAR4.4
 web→www.bbb.com(virtual)
    www.ccc.com(virtual)
 mail(Plug-in) →mail.aaa.co.jp
                mail.bbb.com
                mail.ccc.com

ファイルメーカーのシステムはwww.bbb.comのページの一部です。
WebSTAR plug-in、WSCを使用し、202.***.***.1のDBへとんでいます。

CDMLは以下の通りです。
自分のもっているドメイン(3つのメールアカウントを送信先に指定するとうまく動作しますが、
他のアカウントだとうまく動作しません。)

FMPro?-DB=mail.fp&-Format=sendmail.htm&-RecID=[FMP-CurrentRecID]&-MailHost=
mail.bbb.com&-MailFormat=sendmail.txt&-mailto=[FMP-Field:mail]&-mailbcc=
info@bbb.com&-mailsub=MAIL&-mailfrom=info@bbb.com&-Find
(長いので、わざと改行をいれてあります)

WebSTAR Adminのメールログは、以下の様になります。(送信されない場合)
SMTP In: Thu, 13 Sep 2001 18:04:31 +0900 connect from 202.***.***.2
SMTP In: Thu, 13 Sep 2001 18:04:31 +0900 disconnect from 202.***.***.2

(正常に送信される場合のログ)
SMTP In: Thu, 13 Sep 2001 18:04:09 +0900 connect from 202.***.***.2
SMTP In: Thu, 13 Sep 2001 18:04:09 +0900  
(Received mail from: info@bbb.com to: test1@bbb.com, 
info@bbb.com client-IP:202.***.***.2) 
SMTP In: Thu, 13 Sep 2001 18:04:09 +0900 disconnect from 202.***.***.2

メールが送信される様にするためには、どうすればイイのでしょうか?
ヒントをお願い致します。

木下@キー・プランニング さんからのコメント
( Thursday, September 13, 2001 19:49:40 )

Unlimitedのマシンから、普通のメーラを使ってメールを送信できる状態に
なっていますか?

あと、getで大量のパラメータを送信するような仕組みになっているよう
ですが、場合によってはURLの最後までWebコンパニオンに伝えられていな
い可能性もあります。もし、こちらが原因ならFORMを使ってPOSTする方法
に変えれば解決すると思います。

松本 さんからのコメント
( Thursday, September 13, 2001 20:12:12 )

木下さん、有難うございます。
Unlimitedのマシンからのメールは可能です。

あとのgetとpostという言葉はいったい何を意味するのか?
まったく理解できません...(^^;

具体的にどういう設定にする必要がありますか?
でも、自分のドメインのメールアドレスには、送信できて、
他のアドレスには送信できないと言うのは、不思議です。
getとpostの問題なのでしょうか?

松本 さんからのコメント
( Friday, September 14, 2001 20:27:40 )

やっぱり、何をやってもダメです。
今迄は、それぞれのドメインをそれぞれのマシンで、webとmailという様に、
運用してしていたのですが、WebSTAR1本にまとめたのが何か問題のでしょうか?
毎日、Web公開している書類を自分のところで開いて、書き込まれていないか
確認を続けるのは、非常に面倒です。何とか解決したいと思っています。

別の選択肢として、UVJ Mailerを使用してファイルメーカーからメールを
送信出来るんですよね?AppleSprictは全く分からないので非常に不安です。
サンプルを示して頂く事は可能でしょうか?田中先生。
(過去ログを探し回ったのですが、よく分からなかったので)

送信したいフィールド数が35ケ位あるのですが、大丈夫ですか?
よろしくお願い致します。

おがわまこと さんからのコメント
( Friday, September 14, 2001 23:39:42 )

ファイルメーカのWEBコンパニオンを使ったメールは,スパムやメール爆弾に
利用される可能性があります.

したがって,使えないよう設定し,UVJ Mailerを使ったCGIにより, WebSTAR
のマシンからメールを出すようにすべきでしょう.

松本 さんからのコメント
( Saturday, September 15, 2001 09:41:33 )

おがわまことさん、ありがとうございます。

さて、みつけました。
これをファイルメーカのスクリプト定義:AppleScriptを実行:スクリプト記述
の場所に書けばよいのでしょうか?

tell application "ファイルメーカー Pro"
  tell current record
    set myTo to cell "取引先メールアドレス"
    set myBody to cell "メール本文"
    set mySub to cell "メールsub"
    set replyTo to cell "使用者メールアドレス"
  end tell
end tell
tell application "UVJ Mailer"
  send mail myBody to myTo subject mySub custom headers ("Reply-To: " & replyTo)
end tell

取引先メールアドレスってのは、フィールド名という事ですか?
これで、35ケあるフィールドをどうやって張り付ける様にするのでしょうか?
御指導よろしくお願い致します。

おがわまこと さんからのコメント
( Saturday, September 15, 2001 21:39:15 )

>したがって,使えないよう設定し,UVJ Mailerを使ったCGIにより, WebSTAR
>のマシンからメールを出すようにすべきでしょう.
の意味がおわかりになっていないようです.

ファイルメーカのWEBコンパニオンによるメールはその設定では送らないようにすることはできません.したがってファイルメーカが動いているマシンから
メールサーバに接続できるように設定してあると,その機能を外部から自由に
利用されてしまいます.

ファイルメーカのスクリプト定義による UVJ Mailerのコントロールはその可能
性がありますが,その点は大丈夫でしょうか?


おがわまことおがわまこと さんからのコメント
( Saturday, September 15, 2001 21:41:19 )

修正です.

>ファイルメーカのスクリプト定義による UVJ Mailerのコントロールはその可能
>性がありますが,その点は大丈夫でしょうか?
UVJ Mailerのコントロールを設定してある場合は
の間違いです.

松本 さんからのコメント
( Monday, September 17, 2001 20:15:02 )

Mail Serverを別のマシンにEIMS1.3.1で立ち上げたところ、以前と同じ様に
うまく動作する様になりました。(SecondaryDNSのみに使用しているPB5300)
WebSTARのMailからは送信できない様です。
(通常の送受信は出来るのですが)

取りあえず、面倒な日常業務から解放されました。(^^)
こんな単純に喜んでいると、おがわまことさんに叱られそうですが...
(ご指導賜りましたが、意味が分からないので手をつけていません
せっかくなのに、申し訳ございません)

UVJ+FMPでメール送信環境を使用されている方は沢山いらっしゃるのでしょうか。
サンプルのAppleScriptをお教え頂ける方はいらっしゃいませんでしょうか?
よろしくお願い致します。
また、その方々は、おがわまことさんのおっしゃっている事をクリアされて
いるのでしょうか?ご指導頂ければと存じます。

牧田 さんからのコメント
( Sunday, September 23, 2001 18:49:34 )

松本様
上記サンプルスクリプト上段はアップルスクリプトからファイルメーカーのフィールドを埋める為のものです。
下段がUVJに送信指示を出すスクリプトで、こちらをファイルメーカー側で動かします。
但し、事前にtell application "finder"でUVJを起動し、おわったら終了する必要があります。
まんまのサンプルがUVJのマニュアルに記載されているはず...のような気がします。

ちなみにWEBコンパニオンのmail送信機能は使った事がないのですが、おがわ様の指摘されるように、Filemakerがメールクライアントに成り得るのであれば、踏み台の危険がありますね。
ただ、私の認識としては、このWEBコンパニオンのmail送信機能というのは
sendmailへのリクエスト用CGIとしての機能だと思い込んでいましたので、ちょっと青ざめています。
早速実験してみたのですが、どうもうまく送信できないようです。
webstarのメル鯖側で外部からはPOP before SMTP、
システムノードからはrelay許可にしていますので、安心しきっていたのですが、問題ですね。
もうすこし検証してみます。

かなまる さんからのコメント
( Sunday, March 31, 2002 12:22:13 )

2002年3月も末になって皆さんの高度な技術に触れています。

遅まきながら、私のところでもFMでWeb公開を開始すべく動き始めています。
上記における「Webコンパニオンのメールはスパムやメール爆弾の危険性がある」というところが良くわかっていません。

例えば、FM-Webサイトに対し見積請求や発注を行った場合、FMは所定のフィールドに書き込まれたアドレスの値に対し、スクリプトによって返答メールを発信することになるでしょう。これを前提にすれば、「メールを発信するスクリプト」が送信実行した直後のスクリプトステップに、「メールアドレスフィールドの値をカットして他のテキストフィールドにコピーする」ステップを加えておけば、いったんメールを発信した後では、いかなる不正な指示を受けようがどこにもメールを発信できなくなるのではないでしょうか。

この方法では、直後の再送信などは面倒になりますが、アドレスはDB内に確実に保持されますし、「第2のフィールドがヌルでなければメールは(とりあえず)発信済である」といった識別フラグとしても利用することができます。

登録会員など、半固定的宛先への定期的な送信の際も、
1.アドレス値を「送信先」フィールドへコピー
2.送信実行
3.アドレス値を退避
の3段階のスクリプトを設定すれば良いのでは?

最も簡単な対策のような気がしますが、こんな甘いもんじゃないのでしょうか。もし今でも本ページを見ることがあったら教えてください。

かなまる さんからのコメント
( Sunday, March 31, 2002 12:26:30 )

●ごめんなさい。読みにくいので改行を入れました。

2002年3月も末になって皆さんの高度な技術に触れています。

遅まきながら、私のところでもFMでWeb公開を開始すべく動き始めています。
上記における「Webコンパニオンのメールはスパムやメール爆弾の危険性が
ある」というところが良くわかっていません。

例えば、FM-Webサイトに対し見積請求や発注を行った場合、FMは所定の
フィールドに書き込まれたアドレスの値に対し、スクリプトによって返答
メールを発信することになるでしょう。これを前提にすれば、「メールを
発信するスクリプト」が送信実行した直後のスクリプトステップに、「メール
アドレスフィールドの値をカットして他のテキストフィールドにコピーする」ステップを加えておけば、いったんメールを発信した後では、いかなる不正な
指示を受けようがどこにもメールを発信できなくなるのではないでしょうか。

この方法では、直後の再送信などは面倒になりますが、アドレスはDB内に確実
に保持されますし、「第2のフィールドがヌルでなければメールは
(とりあえず)発信済である」といった識別フラグとしても利用することが
できます。

登録会員など、半固定的宛先への定期的な送信の際も、
1.アドレス値を「送信先」フィールドへコピー
2.送信実行
3.アドレス値を退避
の3段階のスクリプトを設定すれば良いのでは?

最も簡単な対策のような気がしますが、こんな甘いもんじゃないのでしょうか。
もし今でも本ページを見ることがあったら教えてください。

かなまる さんからのコメント
( Monday, April 01, 2002 00:24:31 )

●補足です
当然、メール自体はメーラーから送信されますので、その送信ボックスやアド
レス帳には何も入れないのが原則と思ってます。
いかにSOHOとはいえ、Webサーバと事務マシンが同一という状況は現実味が薄
いような気がしますので...
とは言っても、最低限1人、見積請求や発注連絡を受ける担当のアドレスは送
信先として記録に残りますので、その人がスパムを受けることは避けられない
と思います。
FMサイトへのアクセス中にURLウィンドウに現れるスクリプト名を調べて悪用
すれば、発注歴があって、かつDBに残存している顧客に、-Script=メール送信
スクリプト名&-Findallで一気に迷惑メールを送信できそうなので、書いてみ
ました。


板橋 さんからのコメント
( Monday, April 01, 2002 12:18:51 )

FMのメール送信についてですが
メール送信でなく、フォームによるサーバーに直接入力なんかでも
同じ事ができてしまうのですか?
そういうことは、FMのWeb公開は非常に危険ということでしょうか?
メールにかぎたことでないような気がして
メールアドレスはFMの中どこかには残っていますよね

かなまる さんからのコメント
( Wednesday, April 03, 2002 02:14:29 )

標準で付属のWebセキュリティDBの設定において「スクリプトの実行」という
括りで、パスワードの認証をする/しない の選択ができるようになっていま
す。ここにチェックを入れなければ、認証無しにはスクリプトが走らないの
で、とりあえず部外者は悪戯ができなくなります。
一見安全なように思いますが、実際には、種々の制約がある中でFMだけを使っ
てDBサイトを構築しようとすると、全てのクライアントに対して「スクリプト
の実行」を許可せざるを得ないこともあります。典型的には、サイトへのアク
セス、あるいは初回の商品検索をトリガとして閲覧者に取引IDを都度乱数生成
により発行する買い物サイトなどを造る際は、手っ取り早い方法としてスクリ
プトによる乱数生成を行います。また、発注実行の際に、FMにより確認メール
の送信など行うためにも、同様にスクリプト実行をクライアントに許可せざる
を得ないでしょう。

それでも、自衛の方法が無いわけではなくて、

・リンクでなくフォームをつかうことでURLウィンドウの表示でスクリプト名
 などの文字列を知られないようにする。
・リモートからDBを起動/終了できなくてもいいから、DBファイルはWebフォ
 ルダより上位の階層に置く。

などなど、基本的ではありますが押さえておきたいポイントはあります。

>メールアドレスはFMの中どこかには残っていますよね

とのことですが、実行時にスクリプト名を見えなくし(ソース見ればわかりま
すけど)、しかもアドレスの実体がメール送信スクリプトの参照先以外の
フィールドに退避しており、かつDBファイルもWEbフォルダより上位に置いて
あれば、とりあえず安心なのでは?。

この場合、予測しにくい文字列(パスワードに近い?)として、以下の要素が
あります。

・メール送信スクリプト名
・メールアドレスの退避先フィールド名、ならびにレイアウト名
・退避先フィールドから参照先フィールドへアドレス値を戻すスクリプト名

長期間連続して公開するのであれば、FWなども当然置くべきとは思いますが、
FMの側でもやれることはいろいろあるはずです。動的な仕組みを造ることので
きるツールなのですから。

そういえば、Lan共有がONだとインターネットでも条件次第で繋がってしまいます。Lan共有をOFFにするか、アクセス権を厳しく設定しておいた方が良いか
と思います。

駄文長文で失礼。

おがわまこと さんからのコメント
( Thursday, April 04, 2002 00:06:46 )

かなまるさんの解答は残念ながら大切な部分を欠いています。

もっと基本的なレベルでの問題があることを認識すべきです。

かなまる さんからのコメント
( Monday, April 15, 2002 23:37:27 )

おがわまことさんの言う基本的な問題って、どの辺のことなんでしょうか。
私のようなSOHO指向ユーザにはピンとこないんですよ。
具体的に指摘頂けると勉強になると思いますが、可能ですか。

確かに、Access Logには妙なIPも残ってますけど、Macだってこともあるの
か、今のところ何も起こらないんですよね...
盗られて困るものは何も置いてないし、手元サーバなのでFTPもAppleShareも
使ってないし、大事なデータを入れたHDはアンマウントのうえ普段は電源を
切っているので...