メールCGIのReturn-Path設定改造

無料で配布されているCGIスクリプトの簡単な改造方法を紹介します。KentWebのポストメールV4.11(postmail.cgi)の改造とKentWebのWeb-MartV1.61(mart_order.cgi)の改造記事です。

パソコンの写真

普通のメールやメールフォームで送ったメールで、CCで送信者にも同じメールが届くように設定していて、送信者がメールアドレスを間違えていた場合、メーラーディーモン(MAILER-DAEMON)からエラーのメールが発信者(管理人)に戻って来るのが普通です。

私はKentWeb(ケントウェブ)のpostmail v4.11とKentWebのWeb-Mart V1.61を使っていて、このエラーメールは戻って来ていました。メールアドレスの間違いがチェックできて非常に便利でした。

しかし、サーバーを変更したら、存在しないメールアドレスでもこのMAILER-DAEMONメールが戻って来なくなりました。そこで CGIスクリプト楽天 ファイルを改造しました。

KentWebのポストメールV4.11(postmail.cgi)の改造

498行付近(V4.3は513行)の Return Path を匿名から自分に変更します。sendmail 起動パラメータに 「-f '$mailto'」 を追加しました。

具体的には498行(V4.3は513行)付近を改造します。バージョンは違っても考え方は同じです。

# sendmail起動
open(MAIL,"| $sendmail -t -i") || &error("メール送信失敗");

に次のように-f '$mailto'を追加します。

# sendmail起動
open(MAIL,"| $sendmail -t -i -f '$mailto'") || &error("メール送信失敗"); 

この$mailtoというのは、管理人のメールアドレスです。この -f パラメータが無いとReturn-Pathにanonymous@*****.***が設定されるようです。anonymousというのは匿名のことです。

この改造でメーラーデーモン(MAILER-DAEMON)からエラーメールが発信者(管理人)に戻って来るので、相手のメールアドレスが有効か無効かがすぐにわかります。現在はセキュリティの面でCCで送信者にメールを送るのをやめています。

KentWebのWeb-MartV1.61(mart_order.cgi)の改造

KentWebの買い物カゴシステムWeb-Martは無料で大変使い易いと思います。Web-MartV1.7も同様です。バージョンは違っても考え方は同じです。

mart_order.cgiの820行付近の Return Path を匿名から自分に変更します。sendmail 起動パラメータに「 -f '$master'」追加。

具体的には820行付近の

# sendmail起動
open(MAIL,"| $sendmail -t") || &error("メール送信失敗");

に次のように-f '$mailto'を追加します。

# sendmail起動
open(MAIL,"| $sendmail -t -f '$master'") || &error("メール送信失敗");

この$masterというのは、管理人のメールアドレスです。この -f パラメータが無いとReturn-Pathにanonymous@*****.***が設定されるようです。anonymousというのは匿名のことです。

この改造でメーラーデーモン(MAILER-DAEMON)からエラーメールが発信者(管理人)に戻って来るので、相手のメールアドレスが有効か無効かがすぐにわかります。