• ベストアンサー

CPANの「Mail::Mailer」 Return-Pathについて

CPANの「Mail::Mailer」をsendmailとしてつかってるのですが、 今回、メールヘッダーのReturn-Pathを変更しなければならなくなりました。 いろいろググッてみたのですが、なかなかそれっぽい情報が分かりません。 my $mailer = Mail::Mailer ->new; のあと、何に(どのように)Return-Pathのアドレスをセットしてあげればいいのでしょうか・・? 知っているかたいらっしゃいましたら、教えてください。宜しくお願いします。

  • Perl
  • 回答数3
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

> Bareword "Return" not allowed while "strict subs" in use at ... > という感じで、怒られてしまいました。。 エラーメッセージを注意深く見れば気がつきますが、 > Return-Path => 'admin@myhost.domain', fat comma (=>)の左辺にあるもの(ハッシュのキー)に '-' が含まれているので 'Return-Path'という一まとまりの文字列とみなされなくなっています。 とりあえずクォートなりダブルクォートなりでくくってやれば ハッシュのキーとしてみてくれるようになります。 The "=>" operator is a synonym for the comma, but forces any word (consisting entirely of word characters) to its left to be interpreted as a string (as of 5.001). This includes words that might otherwise be considered a constant or function call. (perlop comma operatorの項)

kumaoka000
質問者

お礼

クォートをつけたらばっちり解決しました!!! キーにクォート、、、こんなこともあるんですね! 有難うございました!!

その他の回答 (2)

回答No.3

sakusaker7 さん、ご丁寧なフォローありがとうございました。 まさにその通りです。 うっかりしていました。 ただ、「最終的にメールを配送するSMTPサーバが、Return-Pathを挿入する」とRFC2821 で規定されています。 原文: http://www.ietf.org/rfc/rfc2821.txt 邦訳: http://www.puni.net/~mimori/rfc/rfc2821b.txt ([Page 49] - [Page 50] あたり) そのため、どちらかというとPerlスクリプト内ではなく、 MTA側(sendmailやposifix など)での設定が必要になってくるのではないでしょうか。 --- 参考までに、Mail::Mailerモジュールの使い方については、 「Perlクックブック 第2版 VOLUME 2」(オライリージャパン) 第18章「レシピ18.3 メールを送信する」 が詳しいです。 この本は、少々値がはりますが、これからもPerlを使う機会があるなら、 手元においておいて損はないでしょう。

参考URL:
http://www.postfix-jp.info/ML/arc.2/msg00404.html
kumaoka000
質問者

お礼

有難うございます! Perlクックブック 第2版 VOLUME 2、参考にしてみますね!!

回答No.1

my $mailer = Mail::Mailer->new; の後に、次のように差出人や宛先、件名といったメールのヘッダをセットします。 $mailer->open({ From => 'hoge@hoge.co.jp', To => 'fuga@fuga.co.jp', Subject => 'hello', }); ここで、Return-Path もいっしょにセットするといかがでしょう。 以下のような感じでしょうか。 $mailer->open({ From => 'hoge@hoge.co.jp', To => 'fuga@fuga.co.jp', Subject => 'hello', Return-Path => 'admin@myhost.domain', }); 動作未検証ですが。

kumaoka000
質問者

補足

有難うございます。やってみましたが、 Bareword "Return" not allowed while "strict subs" in use at ... という感じで、怒られてしまいました。。 また何か分かりましたら、宜しくお願いします。

関連するQ&A

  • CGIでメールのReturn-Pathに値をセットする方法を知りたいです

    PERLにてメールを送信する際の、 [Return-Path]に明示的にメールアドレスを指定したいのですが、 ヘッダー内に "Return-Path:" . "メアド"; のように指定しても反映されません。 Return-Pathはどのように設定すればよいのでしょうか。

    • ベストアンサー
    • CGI
  • メールフォームのReturn-Pathの指定

    「Return-Path」をこちらのメルアドになるように メールフォームのCGIをいじったのですが 送信されたメールのヘッダの「Return-Path」がちゃんとこちらのメルアドになるサーバーと 反映されず設置サーバーのメルアド?しか表示されないサーバーとがあります。 設置サーバーによって「Return-Path」を指定できたりできなかったりするのでしょうか? なぜこうなるのかよくわからないのでどなたかご存知の方よろしくおねがいします。

    • ベストアンサー
    • CGI
  • Return-Path のデフォルト設定はどこですか?

    Vine Linuxの自宅サーバでCGIやPHPのメール自動送信スクリプト(メールフォームやメルマガやブログのコメントなどなど・・・)で、Return-Pathを設定しないで送信すると、なぜかReturn-Pathがrootならまだ良いのですがそのスクリプトとは全く関係ない普通のユーザーのメールアドレスが設定されてしまいます・・・ちなみに普通のユーザーは自分1人だけなので自分のプライベートアドレスなわけですが・・・ もちろんスクリプトを使用しない通常のメール送信のReturn-Pathは全く問題なくFromのアドレスが適用されます。 CGIのスクリプトの中をのぞいてsendmailの送信部分にオプション -f でReturn-Pathアドレスを指定すれば問題なかったのですが、他にも色々メール送信部分があるのですべて直すのは難しく根本的なところを直したいのですが、どこにReturn-Path のデフォルト設定(指定しない場合の設定)はあるのでしょうか?・・・こんな設定をした記憶はないのですが・・・せめてプライベートアドレス以外にしたいのですが・・・・ サーバのメールソフトは送信サーバにPostfix SMTP-AUTH、 受信サーバにcourier-imapを使用していますが、CGI でのメール送信はPostfix互換?のsendmailで行っています。 以上よろしくお願いします。

  • 偽装メール?

    あるサーバーから偽装メールとおぼしきものが何通か届きました。ヘッダーを確かめたところ、≪OutlookExpress≫等、広く使われているメーラーで見たときと、私が使っているマイナーで古いメーラーで見た時とでヘッダーの内容が違うのです。一番違うのはアドレスです。当然?≪Return-Path≫も違います。≪Reply to≫などを使ったspamなどとは違います。 そして古いメーラで表示されるヘッダーのほうが正しいようなのです。どなたかこの手の偽装について詳しい方はおりませんでしょうか?また届いたメールは証拠としてとっておきたいのですが、この種の偽装を暴く方法や正しいヘッダー情報を取り出す方法、ツールについて知っていらっしゃるならぜひ教えていただきたいです。 どうかよろしくお願い致します。

  • メールアドレスのリターンパスについて

    最近、メールアドレスのリターンパス(返信する際に便利なように自分のメールアドレスを入れておく部分)にわたしのメールアドレスを勝手に使ったメールがたくさん来るようになったのですが、どう対処したらよいのでしょうか?

  • mail関数を使った場合のReturn-Pathは?

    Apache 1.3.33 PHP Version 4.4.1 $header = "From:".$_from; $header .= "Return-Path:".$_from; のようにヘッダー部を設定し、mail関数を使っています。 $result = mail($_email, $subject, $message, $header); しかし、Return-Pathが反映されていないようで、 メールが届かない場合などの、 「failure notice」メールが Apache側で設定されているメールアドレスに 送信されてしまいます。 どのように設定すればよろしいのでしょうか? またパラメータを使って $header = "From:".$_from; $para ="-f".$_from; $result = mail($_email, $subject, $message, $header,$para) 上記のように記述してみたのですが、だめでした。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Return-pathとReply-Toの違い。

    メールのヘッダの Return-pathとReply-To は何が違うのでしょうか?メールを返す先、と漠然と考えているのですが…。

  • EメールのReturn-Pathって変更可能ですか?

    こんにちは メールでなりすましのメールを送ってる人たち(迷惑メール送信業者など)はFromを変えたりしてるとおもうのですがヘッダのなかにあるReturn-pathという部分も変更して送信していることってありえますか?? あと、携帯電話などの「なりすましメール拒否機能」というのはメールのFromとどこを比較したりしてなりすましか否かを判断しているものなのでしょうか???   よろしくお願い致します。 (ちなみに、迷惑メールを送ったり悪用目的の質問はありません)

  • mailのリターンパスを送信時に変更することは可能ですか?

    mailのリターンパスを送信時に変更することは可能ですか?

  • フォームメールでメールを扱う場合のReturn-pathの設定について

    ちょっと初歩的な質問かもしれませんが、困っていますので教えて下さい。 メアド非公開型の掲示板などでは、フォームメールが必須です。 で、フォームメールがエラーになった場合のエラーメールの送り先、 つまり、Return-pathについて質問させて下さい。 (Return-pathの設定の仕方は分かっています。) 1.管理人に戻す設定--第三者(管理人)が差出人のメール内容を見れる状態ができてしまう。 2.差出人に戻す設定--受取人のメールアドレスが、差出人に公開される。 上記の方法それぞれに欠点があります。 普通は、1の方法を採用しているようですが、チョット問題があるように思いま す。ことわり書きを入れて、2の方法を採用するというのはどんなものでしょうか? 3番目の選択肢として、Return-pathを設定しないで、エラーメールを受け取らない設定と言うのはどうでしょうか? エラーになったかどうかは分からない代わり に、1、2の欠点をカバーできます。ただ、Return-pathを空設定にすると、取り扱いを拒否するサーバーもあるとききますが、そのあたりはどうなのでしょうか? 宜しくお願いいたします。

専門家に質問してみよう