プロが教える店舗&オフィスのセキュリティ対策術

PerlでメールフォームCGIを作成しました。
メール記入欄に存在しないメールを入力し実行したとします。
では、そのメールは当然あて先がないのでどこかにいくと思うのですが、それはどこにいくのでしょうか?
また、もしそのように存在しない場合、自分のアドレス宛てにリターンさせることは可能なのでしょうか?
よろしくおねがいします。

A 回答 (6件)

そのCGI次第でしょう。



そのCGIがfromなど送信元としているメールアドレスにエラーメールが届くだけかと

この回答への補足

fromでは届かなかったんです。
またerrors-to:やReply-To:でも届かないんです。
他に方法は?

補足日時:2005/01/07 23:34
    • good
    • 0

> またerrors-to:やReply-To:でも届かないんです。



Sendmail、qmail等に渡してメールを送っている場合、設定によってはこれらがヘッダを書き換えている場合があります。
実在する自分のメールアドレス宛に送ってみてヘッダ内のReply-to、From、Return-Path、Errors-toを確認してみましょう。
    • good
    • 0

エラーメールが自分に返らないのであれば、恐らくメールサーバの


管理者(root)が最終的に受け取る可能性が高いです。

CGIを使って送信するとそのwwwサーバ(Apacheなど)に設定されて
いるユーザ(nobody,wwwなどが多い)送信のメールになります。
但し、SuEXECで起動していれば個々のユーザ扱いかも。

Apacheのnobodyユーザなどの場合、メールをやり取りするユーザ
ではないのでメールを受け取ることができません。
このようなときに受け取るのは最終的にサーバ管理者になります。

sendmailの場合、信頼できるユーザとして登録されていれば
-f オプション指定で制御できるようです。
「/path/to/sendmail -t -i -f 送信元メールアドレス」


詳しくはEnvelopeやMUAあたりで検索すると詳しく載ってると思います。

この回答への補足

なるほど。
やはりroot宛てに届いているだけなのですね。その場合CGIだけで設定はできないのですね。
では、さらに質問させてください。
実はそのCGIは自分のLinuxサーバーで実行しています。
Redhat7.3なのですが、なにか特別設定をすれば各ユーザーにとどくようにできますか?

補足日時:2005/01/09 22:49
    • good
    • 0

自サーバということでしたら思うがままに設定できます。



各ユーザというのは、Linuxがマルチユーザで動作している
ということですか? それともシステムユーザではない外部
のユーザということ?

先にも書いたとおりに sendmail で -fオプションを使って送信するようにすれば解決すると思います。

まず、wwwサーバの実行ユーザを把握してください。
その実行ユーザがCGIを実行しますのでメール送信ユーザ
になります。この実行ユーザ権限で -fオプションに送信
する人のメールアドレスを渡すことになります。
これでメールが送れない場合にはsendmailの設定で信頼
できるユーザとして登録してください。

どういったユーザでどういったデータの流れなのか
わかりませんのでこれぐらいしか書くことができません。
    • good
    • 0
この回答へのお礼

>各ユーザというのは、Linuxがマルチユーザで動作している
>ということですか? それともシステムユーザではない外部
>のユーザということ?
マルチユーザーという言葉ははじめて聞くことなのでわかりませんが、LinuxでよくゆうユーザーIDのユーザーのことです。(あってますか?)

CGI内にはすでに-tオプションをつけておりました。
open(SENDMAIL,"| $sendmail -t")

しかし-fだけに変えるとメールが飛ばなくなりました。
open(SENDMAIL,"| $sendmail -f")
また-t -fにしてもメールが配信されませんでした。
open(SENDMAIL,"| $sendmail -t -f")

以前から勉強しようとおもっていてなかなかできなかったのですが、そのsendmailのオプションについて詳しくしりたいのですがどこかに掲載されているのでしょうか?

申し訳ないですがご教授お願いします。

お礼日時:2005/01/10 17:26

>open(SENDMAIL, "| $sendmail -t");


これは、CGIがPerlで書かれているということですね?

#3で書きましたように、
open(SENDMAIL, "| $sendmail -t -i -f userid\@domain");
で送れませんか?

sendmail には山ほどオプションがあります。
sendmail perl CGI などで複合検索をかければ山ほどヒットします。
残念ながらあまり参考になるようなサイトは見つけられませんでした。ただ、オプションについて詳しく知りたいの
ならマニュアルがいちばんいいように思います。
    • good
    • 0
この回答へのお礼

ばっちりうまくいきました。
ありがとうございます。
ところでマニュアルというのは・・・いったいどこにあるのですか?

お礼日時:2005/01/10 23:49

UNIX系には通常、マニュアルが付いています。


man というコマンドです。(manualの略)

#sendmail のオプションを調べたいなら
% man sendmail

#man コマンドの使い方がわからないなら
% man man
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!