ずいぶん前にplot-factory.com配下から独自ドメインへ移転したパソコン教室の生徒さんのサイトは現在Yahoo!ジオシティーズのジオプラスを使っている。
今までは送信フォームの部分だけはplot-factory.comに飛ばして処理していたのだが、知らない間にジオプラスでもsendmailが使えるようになっていたのでこれを機に完全移転を考えた。
ところが、今まで使っていたプログラムをそのまま移しても動かない。
以下、移転する際に注意する点と最大の難点を紹介する。

ヤフー・ジャパン公式ガイド 2005 ジオシティーズ&コミュニティ編ヤフー・ジャパン公式ガイド 2005 ジオシティーズ&コミュニティ編
著者:ユニゾン
販売元:ソフトバンククリエイティブ
発売日:2005-03-26
おすすめ度:4.0
レビューを見る


通常、気をつけなければならないのはperlのパスとsendmailのパス。
これにパーミッション(アクセス権)の設定だけ押さえておけば、大概のホスティングサービスで動くはず。

Yahoo!ジオプラスの場合は
■perlのパス /usr/bin/perl
■sendmailのパス /usr/lib/sendmail 又は /usr/sbin/sendmail
以上を元スクリプトから書き換えてアップロード。
なお、Yahoo!ジオプラスは拡張子を元にパーミッションを自動で設定してくれるので設定は不必要。
(CGIが使える設定にしなければならない、CGI用のURLでないとCGIが使えない、等、Yahoo!にはいろいろとハードルがあるがそれらしっかりなされているのが前提)

これで動いていると思っていた。
「思っていた」というのは、動作上まったくエラーが出なかったからだ。
ところが、その場でメールを確認してもらっても届いていない。
何度やっても一緒、エラーは出ないが届かない。

そこで、ftpでアクセス。geo_cgi_private内をのぞいてみるとmailError.logという名前のファイルが作られていた。
そこには、
GMT 2009/05/23 00:45:41 ERROR 301: 指定した'From'がYahoo!メールで使用可能か確認してください。http://geocities.yahoo.co.jp/v/originalcgi/sendmail/
と言うエラーが並んでいる。

上記URLにアクセスしてみるとこんな一文を見つけた。
Yahoo!ジオシティーズ - Sendmail
お客様どうしの大切な情報の保護のために、セキュリティ面の対策として、送信されるメールの送信元メールアドレス(From欄)が、Yahoo!メールの「メールオプション」にある「メールアドレスの追加・編集・削除」で設定しているメールアドレスもしくはYahoo!メールのメールアドレスの場合のみSendmail機能を設定できます。
「From欄」ってのは通常のメール送信の場合、送信元のアドレスが書き込まれる。
僕が普段使っている送信フォームCGIもそれにならって「From欄」にはフォームで入力された入力者(送信者)のメールアドレスが書き込まれるようになっていた。
これだったら、届いたメールに返信するだけで送信者宛のメールが作れるからだ。
ただし、Yahoo!ジオプラスではこの技が使えないらしい。

原因がわかったところで対策です。

【対策その1】
プログラム側で「From欄」を送信先と同じアドレスにしてしまう。
print OUT "From: xxxxx@yahoo.co.jp"; # たとえばこんな感じ
これが一番手っ取り早かったのでこちらで設定しました。

【対策その2】
Yahoo!メールで「From欄」に使えるメールアドレスを設定する。
上記Yahoo!ジオシティーズの説明の通り、Yahoo!メールの「メールオプション」から設定する方法。
「メールオプション」が見あたらない場合は「前のバージョンに戻す」をクリックしてから「メールオプション」→「メールアドレスの追加・編集・削除」。
こちらで「From欄」に使っているメールアドレスを設定する。

ただし、どちらの方法を使っても送信元メールアドレスに本来の送信元メールアドレス(フォーム入力者のメールアドレス)を設定することはできません。