CGI利用時のパスとメール送信について

CGI 利用時のパスとメール送信について
(2015.5.27 更新)
■1.CGI 利用時の Perl,Ruby のパス等について
#!/usr/local/bin/perl 」です。
ruby のパスは、
「 #!/usr/local/bin/ruby 」です。
perl のパスは、
「
※ CGI 等のパーミッションは 755 辺りがよろしいかと思います。
◎サーバのデフォルトの文字コード: UTF-8
◎Perl のバージョン: ver-5.18.x
※ 旧式の jcode.pl を使用している場合は、下記のページような修正が必要です。
http://icepotato.cocolog-nifty.com/blog/2014/04/jcodepldefinedh.html
◎Ruby のバージョン: ver-2.1.x (2015 年 5 月 27 日から適用します。それまでは ver-1.9.x です。
)
※ ver-1.9 のサポートは終了しているため、5 月 27 日(水)早朝の定期保守作業で標準の
Ruby ( /usr/local/bin/ruby )を ver-2.1 に変更いたします。
※ 段階的に更新してゆきますので、4月 22 日の定期保守作業後では /usr/local/bin/ruby を
ver-1.9 のままといたします。
※ 現在 Ruby をお使いの方で、引き続き ver-1.9 を使いたい場合のみ、5 月 27 日の定期保守
以後は Ruby のパスを下記のように変更してください。
/usr/local/bin/ruby から /usr/local/bin/ruby19 に変更する。
※ ただし、ver-1.9 については、上記の通り当面の間の利用は可能ですが、サポート対象外と
させていただきます。
■2.CGI など Web アプリからのメール送信について
◆2.1. ssmtp の利用について
汎用レンタルサーバでは、これまで CGI 等の Web アプリからのメール送信について、後述の「3.
smtp 25 番ポートへの接続」のように、localhost に smtp 接続して行うようお願いして参りました。
現在は、新たに ssmtp というメール転送エージェントを導入して、コマンド実行によるメールの送信
にも対応いたしました。これにより、sendmail コマンドの代わりに ssmtp コマンドを指定すること
によって、CGI からメールを送信できるようになりました。CGI 等で指定する ssmtp コマンドのパ
スは次のとおりです。
/usr/local/sbin/ssmtp
◎PHP をご利用の場合、 send_mail/sb_send_mail といった関数を利用してのメールの送信も
可能となります。
◎Drupal や WordPress 等の CMS をご利用の場合、上記の ssmtp コマンドを指定する方法に
よってもメール送信が可能となります。
◎ssmtp についての詳細は、以下の URL をご参照ください。
http://packages.debian.org/stable/mail/ssmtp
◎従来の方法( smtp 25 番ポートに smtp 接続してメールの送信)には影響は無いので、今までの
方法でもそのまま利用できます。ssmtp を利用すると、メールの送信に中間処理を 1 つ余分に挟
むことになります。基本的には smtp 25 番ポートへ接続する方法を引き続き推奨します。
■3.SMTP 25 番ポートへの接続について
◆3.1. perl からのメール送信について
汎用レンタルサーバでは、メールサーバとして postfix が内部で稼動しておりますが、利用者が直接
アクセスできない仕様になっております。
◎問い合わせフォームなどからメール送信する場合は、localhost(127.0.0.1)から SMTP(25 番ポート)
を呼び出してメール送信してください。
◎日本語を含むメールを送信する際は、 Net::SMTP で日本語を送信するために Encode を使った例
を紹介します。
(例 1)perl-mail-cgi のサンプル
http://www.cc.tsukuba.ac.jp/computer/rental/info/perl-mail-form.pdf
http://www.cc.tsukuba.ac.jp/computer/rental/info/perl-mail-cgi.pdf
(例 2)メールフォームプロ のご紹介
※ Mailform Pro(ver2.1.5) 以降で SMTP 接続に対応しています。
(札幌の和田様に感謝)
check.cgi ではなぜか「sendmail のパス検出に失敗・・・」と警告が表示されましたが、
config.cgi を編集し、sendmail のパスの指定を無効にして、smtp 接続を有効にすれば
よいようです。
###$config{"sendmail"} = '/usr/sbin/sendmail';
$config{'SMTPserver'} = 'localhost';
※ 「ERROR CODE5 Javascript が有効ではありません」というエラーが出る場合、
include.cgi のパーミッションを 775 などにしたら解消できました。
※ 上記の CGI ファイルなどを Windows 端末で編集する際は、文字化け解消のため、
TeraPad などのツールを利用すると便利です。
◎参考情報
http://www.site-cooler.com/kwl/perl/smtp.htm
http://tech.bayashi.net/pdmemo/sendmailbyperl.html
http://search.cpan.org/~gbarr/libnet-1.19/Net/SMTP.pm
http://tomo.ac/goodstream/perl/tips.html
http://pointoht.ti-da.net/e6662550.html
http://perl-memo2.seesaa.net/article/117453609.html
◆3.2. ruby からのメール送信について
ruby では、net/smtp モジュールが利用できます。日本語については、ruby に標準で実装されている
kconv や nkf などの文字コード変換ライブラリで使用可能となります。
◎参考情報
http://www.ruby-lang.org/ja/man/?cmd=view;name=net%2Fsmtp
http://nabeshiki.tumblr.com/post/20004548136/2002-uu-ruby-mail
◆3.3. php からのメール送信について
上記の perl と同様に php では PEAR モジュールを利用して、localhost に対して SMTP 接続してメ
ール送信する方法をご利用ください。 具体的には、Pear::Mail と日本語の場合は、Pear::Mail_mime
も require_once で指定して実行します。
(例 3)pear_mail のサンプル
http://www.cc.tsukuba.ac.jp/computer/rental/info/pear_mail_sample.pdf
■4.安全なウェブサイトの作り方
ウェブフォームなどに入力されたデータに仕込まれたコードやタグを適切にエスケープしないでその
まま使用してしまうと、クロスサイト・スクリプティングなどに悪用される危険性があります。
下記のページにある「安全なウェブサイトの作り方」などの情報をご覧ください。
◎参考情報 独立行政法人 情報処理推進機構 セキュリティセンターのページ
https://www.ipa.go.jp/security/vuln/websecurity.html