DiceKeyのチラシの裏
Amebaでブログを始めよう!

SSLサーバー証明書の更新

久しぶりの更新です。


極端な話、SSLの更新自体は前回使用していたサーバーIDを流用するのであれば

CSRの再作成なんて事はしなくてよいのですが…。

まぁ、セキュリティの観点からいうとやっぱり更新するのが望ましいですよね。

つーわけで、めんどいけどやってみました。


# cd /usr/local/apache/conf/

# openssl req -new -keyout ssl.key/new_server.key -out ssl.csr/new_server.csr

Enter PEM pass phrase:


で、秘密鍵のパスフレーズを要求されるので、任意のパスフレーズを入力。

httpdを起動する度にパスフレーズを要求されるようになるので、めんどい人は

上記コマンドラインに"-nodes"オプションを追記すればOK。


その後、各種情報入力を要求されるので正確に入力。


完了すると、CSRファイルが出力されます。

CSR項目内容の確認をするには

# openssl req -noout -text -in ssl.csr/new_server.csr | less


初回申請時の内容を忘れた人には便利なコマンドですね。

【qmail】Pop before SMTPでメールが送信できない

先程、業務用のメールサーバーに突然トラブルが発生しました。

Pop before SMTPのメールサーバーで受信はできるのに送信ができないという現象。


以前から順調に運用されているサーバーだったので、単純にクライアントソフトの設定ミスかな?

と思いきや、他の環境でもおもいっきり同じエラーが出てました。


ググって調べてみると、どうやらqmail-smtpd-relay-rejectというパッチをあてれば大丈夫という情報が。

早速、情報通りにパッチを適用してみると無事に動作するようになりました。


ちなみに該当するパッチの内容は、
「'%'等を含むアカウントへのメール受信を禁止し、不正利用の対応」

との事でした。


まぁ、よくわからんけど無事動いたのでよし。

それにしてもqmailのパッチって意外と多いですね。(参考:マロンくん.NET

qmail-smtpd-relay-reject と qmail-103.patch ってパッチの存在は初めて知ったですよ…。

【Ajax】郵便番号検索を試しに作ってみる

Ajaxで郵便番号検索といえばこのサイト

Ajax を使った郵便番号検索


いろんなAjax情報系のサイトを参考にしながら僕も勉強がてら

真似して作ってみました。 

こちら


作ってみたはいいものの、なぜかIEでしか動作しないという

原因不明の状態に。

記述の方法は違えど、スクリプトの内容的には一緒なんだけどなぁ…。

もうちょっといろいろ調べてみるです。


今のところ、検索状況は単純にinnerHTMLで出力してるけど、CSS等を

駆使したりすればかなりカッコイイものnなるんじゃないだろうか?


いや、作るのめんどいからやらないけど。

【NEWS】Googleローカルの携帯版が登場

Google モバイル


凄い!早くも携帯版が公開!

とりあえずどんな感じなのか自分の携帯でアクセスしてみました。


…ローカル検索ができない。


僕の使ってるキャリアが微妙に古い(vodafone SH-53)のが原因でしょうけど、

対応状況等が不明な点が気になります。vodafoneだと3Gじゃないとダメとか?


マップの操作性とか、どんな感じなのかとても興味があったんですけど残念です。

使用した方がいまししたら、是非感想をコメントとかで下さい。

Google Maps API

最近流行のGoogle Maps API を使用してこんなもの をつくってみました。


Google Maps APIのテスト


地図上の任意の位置をダブルクリックして座標を取得する。

または、地図サイトの検索結果URLを元に座標を抽出する。

その後、取得・抽出した座標に情報を登録できます。


対応地図サイトはGoogle MapsYahoo! 地図情報Goo MapsLivedoor MapMapFan

ただ、サイトによって座標の精度がまちまちのようです。


こういうの作ってみたはいいものの商用利用はダメっぽいです。

さて何か面白い事につかえないだろうか…。

【Qmail】Qmailキューの処理

そもそも、Qmailキューの存在自体初めて知ったわけで…。


キューの確認 … /var/qmail/bin/qmail-qstat

キューの詳細 … /var/qmail/bin/qmail-qread

キューの再送 … kill - ALRM xxxx (send-mailプロセスにALRMを渡す)


また、キューがどうしても処理できない場合は強制的に削除する。


■ 強制的に削除する場合


qmHandle というソフトウェアを利用します。

http://qmhandle.sourceforge.net/

インストールは単純に解凍するだけ。

tar xvzf qmmhandle-1.2.0.tar.gz

Perlのスクリプトなので環境に合わせて設定を変更する必要があります。

今回は/etc/rc.d/init.d/qmailを利用してqmailの起動・終了を行っている場合の記述です。

# For instance, this is if you have DJB's daemontools
#my ($stopqmail) = '/usr/local/bin/svc -d /var/service/qmail';
#my ($startqmail) = '/usr/local/bin/svc -u /var/service/qmail';
# While this is if you have a Debian GNU/Linux with its qmail package
my ($stopqmail) = '/etc/init.d/qmail stop';
my ($startqmail) = '/etc/init.d/qmail start';

あとは、/usr/local/bin以下にでも移動させればよい。

# install -o root -g qmail -m 0755 qmHandle /user/local/bin


オプションは以下の通り

-a … 再配送
-l … キュー内のローカルキュー・リモートキューのヘッダーとサマリー情報を表示
-L … ローカルキューのヘッダーとサマリー情報を表示
-R … リモートキューのヘッダーとサマリー情報を表示
-s … キューの数を表示
-mX … メール番号Xの内容表示
-dX … メール番号Xの削除
-D … キュー内のすべてのメールを削除


便利ですね。

【PHP】携帯のUSER AGENTについて 番外編

前回の記事 の補足です。


先日、ちょうど携帯対応ページ作成の案件がきたので前回のスクリプトを試してみました。

なかなかいい感じです。…1つの問題点を除いては。


問題となる機種はVodafone社の702NK。

どうやらUSER_AGENT振り分けの時点で「PC」と認識されているようです。

ちなみに、702NKのUSER_AGENTは以下の通り。


Vodafone/1.0/V702NK/NKJ001[/Serial] Series60/2.6 Nokia6630/2.39.148

Profile/MIDP-2.0 Configuration/CLDC-1.1

参考サイト:ボーダフォン ユーザーエージェント情報


ちゃんと"Vodafone"という文字列が含まれているので振り分けされるはずなんだけど…。

eregiじゃなくてpregで厳密に正規表現でマッチングさせればクリアできる問題なんだろうか。

でも、某大手ソフトウェア会社の携帯対応グループウェアでも同様の問題があるとのこと。

まぁ、どっちにしても実機が手元にないので検証できないわけですが。


というか、Vodafone 3Gのリリース当初は各サイトで不具合が発生していたようです。

あのジャパンネット銀行 でさえ「ご利用いただけない機種」として告知していたとか。

現在はそのような告知はありませんが、いったいどうやって対応したんだろう?


詳しい人がいたら是非情報提供をお願いしますです。

【PHP】携帯のUSER AGENTについて

今回はちょっとした携帯対応のページを作成する機会があったので、USER AGENTについて調べてみました。

まとめて記事にしようと思ってたけど、ものすごいよさげな記事があったのでトラックバック

させていただきました。


コンピュータ系blog "ケータイのユーザエージェント"


USER AGENTの資料って非常に流れの速い情報なので、本気でやるならキャリア毎にマメにチェックしないと。

とはいったものの、いまだに厳密にキャリア分岐させる携帯サイトの仕事ってしたことありません。

はやいとこフルブラウザの普及率が上がって欲しいものです。


というか、Lモードって実物すら見たことがない気が。


if(eregi( "DoCoMo/2", $_SERVER["HTTP_USER_AGENT"]){

   ドコモ FOMA (XHTML)
}else if(eregi( "DoCoMo/1", $_SERVER["HTTP_USER_AGENT"]){

   ドコモ MOVA ブラウザフォン
}else if(eregi("J-PHONE", $_SERVER["HTTP_USER_AGENT"])){
   ボーダフォン 1G,2G
}else if(eregi("Vodafone|MOT-",$_SERVER["HTTP_USER_AGENT"])){
   ボーダフォン 3G  (XHTML)
}else if(isset($_SERVER["HTTP_X_JPHONE_MSNAME"])){
   ボーダフォン 旧1G?
}else if(eregi("KDDI-", $_SERVER["HTTP_USER_AGENT"])){
   WAP2  (XHTML)
}else if(eregi("UP.Browser", $_SERVER["HTTP_USER_AGENT"])){
   WAP1 (HDML)
}else if(eregi("ASTEL", $_SERVER["HTTP_USER_AGENT"])){
   ASTEL
}else if(eregi("DDIPOCKET", $_SERVER["HTTP_USER_AGENT"])){
   WILLCOM Air EDGE PHONE
}else if(eregi("PDXGW", $_SERVER["HTTP_USER_AGENT"])){
   WILLCOM EDGE LINK (Open Net Contents)
}else if(eregi("L-mode", $_SERVER["HTTP_USER_AGENT"])){
   NTT L-mode
}else{
   PC
}

【PHP】文字列の暗号化

crypt関数 string crypt ( string str, string [salt])


saltによる暗号化手法は以下の通り

CRYPT_STD_DES … 2文字のSALTの標準DES暗号

CRYPT_EXT_DES … 9文字の拡張DES暗号

CRYPT_MD5 … $1$で始まる12文字のSALTを有するMD5暗号

CRYPT_BLOWFISH … $2$で始まる16文字の拡張DES暗号


使用例) 標準DES暗号を利用した暗号化


 $salt = "jp";

 $word = "カレー味のうんこ";

 $word = crypt($word,$salt);


またcryptは一方向の暗号化のため、複合化はできない。

よって、比較対象文字列にcrytpで暗号化してから比較する。


ちなみに、PHPのコンパイル時にcryptの拡張モジュールを導入すると、さまざまなmycript関数が

使えるようになるっぽいです。よくわからんけど。

【MySQL】インストール手順メモ

1.オフィシャル よりソースをダウンロードする。


2.MySQL用のユーザとグループを登録する。

  (※ディレクトリはMySQLのデータディレクトリを指定する)


  # groupadd mysql

  # useradd -g mysql -d /usr/local/var mysql


3.コンパイル


  # ./configure --with-charset=ujis --with-extra-charsets=all --with-mysqld-user=mysql

  # make

  # make install

  オプション

  --with-charset … 文字コードの指定。ここではEUC-JPを指定する。

  --with-extra-charsets … デフォルトの文字コード以外にサポートする文字コードを指定。

  --with-mysqld-user … MySQLデーモンを起動するユーザを指定


4.初期データベースを生成


  # /usr/local/bin/mysql_install_db --user=mysql


5.バイナリのオーナーをrootに、データディレクトリの所有権をMySQLを実行するユーザに変更する。


  # chown -R mysql /usr/local/var

  # chgrop -R mysql /usr/local/var


6.MySQLを起動


  # /usr/local/bin/asfe_mysqkd --user=mysql &

  ※safe_mysqldが存在しない場合は、mysqld_safeで起動する。

7.MySQLが正常に動作しているかどうか確認

  # /usr/local/bin/mysqladmin ping


  "mysqld is alive"と表示されればOK。


8.MySQLコマンドの準備


  Linuxの場合、/etc/ld.so.confファイルに /usr/local/lib/mysql と記述し、

  # ldconfig を実行する。


9.パスワードの設定


  # /usr/local/mysql/bin/mysqladmin -u root password 'test'

  この設定を行う事で、mysqladminコマンドの使用時にパスワード認証が行われる。


  また、パスワードの付加されていないユーザの削除も行う

  # /usr/local/mysql/bin/mysql -u root -p

  mysql> use mysql;

  mysql> delete from user where passoword='';

  mysql> exit




いっつもPostgreSQLばっか触ってたから、MySQLとか超新鮮!XOOPS構築のために必要なのですよ。