2009年3月10日

squidですべての要求を上位プロキシ経由で転送するconf

インターネットにダイレクトアクセスできない場所から、どうしてもインターネットに出る必要があったので、別の場所にsquidでプロキシサーバーを作って、そこを経由させてインターネットに出るようにしたのだが、初めてsquidを使ったので、イマイチ動作がよく分らずconfの書き方にちょっと苦労した。
画像やhtml単体は落ちてくるのに、その他のところはタイムアウトしてしまう。
ログを見ていると、hogehoge.txtやhogehoge.jpgはsquidが取りに行って渡しているのに、「?」や「/」で終わったりするURLはダイレクトアクセスさせている。
最初はMIMEタイプの問題かと思ったのだが、どうもそうではないらしい。
基本的にsquidってのは、今回のように代理サーバーや中継サーバー用途というよりは、キャッシュサーバーを想定して作られているので、特に明示的に指定せずにconfを書くと、静的コンテンツだけがsquid経由でクライアントに渡される仕様になっているようだ。
ということで、すべてのクライアント要求をsquid自身が取りに行き、かつ上位プロキシを経由する設定を書いてみる。

(続きを読む...)

2008年11月28日

色々なデーモンのデバッグモード

色々なサーバーを作っていて一回コンパイルしてconf設定してすぐにちゃんと動けば申し分ないけど、ほとんどの場合は一度では動かない。
confを書き換えたり、オプション変えてコンパイルしなおしたりと試行錯誤が必要になってくる。
で、サーバーが思ったように動かない時に詳細なログ吐かせて何が問題になっているのかを特定するために、各デーモンのデバッグモードでの起動、あるいはデバッグログを出力させての起動が必須になる。
といういことで、各デーモンのデバッグオプションを書いてみた。
バックグラウンドで動かさずにフォアグラウンドで起動して標準出力に大量のログを吐くタイプと、
フォアグラウンドには出ないけど、ログには詳細なデバッグ情報を各タイプと2タイプある。

(続きを読む...)

2008年11月27日

apache1.3にmysql認証を追加

apacheでのユーザー認証と言えばBasic認証かDigest認証やけど、仮想ユーザー統一の一環として、
ベーシック認証の問合せ先をパスワードファイルだけではなく、mysqlも参照出来るようにしてみた。
作業としてはapache1系mod_auth_mysqlを追加するという事になる。

CFLAGS="-native -mt -fast" ./configure --enable-rule=SHARED_CORE --enable-module=so --prefix=/usr/local/apache --enable-module=auth_digest --enable-module=digest

ってな感じコンパイルされているapacheに、モジュールとしてmod_auth_mysqlを組み込む
mod_auth_mysqlのソースディレクトリで、

/uasr/local/apache/bin/apxs -c -L/usr/local/mysql/lib/mysql -R/usr/local/mysql/lib/mysql -I/usr/local/mysql/include/mysql -lmysqlclient -lm -lz mod_auth_mysql.c

と直接mod_auth_mysql.cをコンパイルするとmod_auth_mysql.soが生成されるので、
sudo /uasr/local/apache/bin/apxs -i mod_auth_mysql.so
でファイルがコピーされる。

(続きを読む...)

2008年11月26日

proftpdでlocalhost意外のmysqlに接続する場合の注意点

mail,ftp,webをmysql内のユーザーDBに統合出来たと言う事で、土偶家の外向きサーバーを家向きサーバーから完全に隔離して、Solarisコンテナ内の別ゾーン内に閉じ込めるべく別環境に移行させた。
それに伴って、各デーモンの問い合わせ先となるMYSQLのデーモンも別のまた別の隔離されたゾーン内に閉じ込めたのだが、postfixでもdovecotでローカルホストではない別のホストへのmysql接続が正常動作しても、proftpdだけ全く動かなくなった。
proftpdでmysqlの問合せ先をlocalhost意外にした場合デーモン自体が起動しないのだ。
これは困ったと言う事で色々調べていると、どうやらinetd経由では起動しなかったものがStandAloneではちゃんと動く。
これは仕様なのかバグなのだろうか?
もしかしたら完全にリードオンリーでマウントされているsolarisコンテナ内のゾーン内でのファイルシステムでの運用に問題があったり、confでのsqlのソケットの指定にパーミッションやら何やらの関係で問題があったのかもしれないけど、まぁ動いたのでこれでよしとする。
又気が向いたらデバッグするかもしれない。

2008年11月25日

postfix 2.5.5 dovecotでsmtp-auth + mysqlによる仮想ユーザー運用

先日cyrus-SASLによるSMTP-AUTHとSMTP/TLS対応のpostfixを作ったが、これをsmtp-authにdovecoのSASLを利用し、仮想ユーザーの参照元をmsqlにするためにコンパイルしなおした。
ネット上に色々情報があるけど、一番参考になったのは、やっぱり本家のドキュメント
Cyrus-SASL対応と比べてDovecotのSASLの良い点は、Cyrusの場合はpostfixのバイナリにCyrusのライブラリをリンクさせる必要があるけど、Dovecotは認証に専用のデーモンプロセスを使うのでコンパイル時にフラグを一つ追加するだけで済む事である。
たしかにヘッダとライブラリ検索パスを指定しつつフラグも追加するよりはエレガントで、かつライブラリをリンクしないと言う事はリンク先のライブラリのバグを取りこむ可能性が一つ減ったという事も言えるのであろう。
以下で、Dovecot-SASLとMysql、SMTP/TLS対応のバイナリのコンパイル、設定の手順、いくつかの注意点を書いてみる。
例の如く、Solaris10 U6 spac版にgccを使わずSun Studio 12のコンパイラでの実装である。

(続きを読む...)

2008年11月24日

mysql対応、openssl対応のDovecotのコンパイル@Sun Studio 12@Solaris10 U6 spac

MTAであるpostfixがsmtp認証を実現するための外部機能として、以前まではCyrus SASLを選択するしかなかったのだが、バージョン2.3からDovecot SASLなるものに対応していることを最近知った。
ということで、その時初めて知ったDovecotについて調べてみると、どうやら単なる認証機能を提供するSASLではなく、pop3とimapを提供するMDAであるらしい。
ユーザーデーターベースとして、UNIXシステムの実ユーザーに対する認証からpam、LDAP、Mysqlなどに対応し、それらの複数を同時に実装できるのが何よりも良い感じである。
メジャーで事実上標準的なMDAであるQpopperとかCourier-IMAPより歴史的には浅いけど、Postfixと連携させて使うことを前提に、しかも実ユーザーでなく、仮想ユーザーでの運用も追加して考えれば良い選択であろう。
これでメールサーバーのMTAの部分とMDAの部分が実ユーザーだけでなくMysql上のDBにある仮想ユーザーも加えて運用させることができた。
以下でSolaris10 U6 spac版にgccを使わずSun Studio 12のコンパイラで実装した手順を書いてみる。

(続きを読む...)

2008年11月13日

postfix 2.5.5 でのSMTP/TLS @OpenSolaris

以前のエントリー「postfix 2.5.5 でのCryus-SASLでのSMTP-AUTH @OpenSolaris」でCyrus-SMTPを使ったSMTP-AUTHを実装したPostfixのビルド方法を書いたけど、更にそれにSMTP/TLSを実装する方法を書いてみる。
このSMTP/TLSなる技術は、本来ならSMTPの他ホストへのリレーにユーザー認証を取りいれ、更にその認証からメール送信までの経路をSSLで暗号化するということでセキュリティーを向上させようという趣旨である。とはいっても、実際通常の使い方をする分には通信経路の暗号化は必須ではない。
自宅サーバーでメールサーバーを運用していると、自宅サーバーから送信したメールが問答無用でスパムメール扱いされる事が多いのは本当に腹立たしい。
これを自宅のISPのSMTPにリレーしてもらうには「Outbound Port25 Blocking」なる技術もあるにはあるけど、私のように自宅ISPにSMTPリレーしてもらえない状況の人もいる。(WilcomADSLでオプション扱いのメール契約していないなど。)
という場合、外部のSMTPを使う事になるわけやけど、一番てっとりばやくスパム扱いされにくく安心出来そうなSMTPと言えばGmailが妥当なところであろう。
しかし、GmailはタダのSMTP-AUTHではなくTLSでのAUTHを要求してくるので、これに対応する事で、GmailのSMTPを経由してメール送信が出来る。
こんなメール乱世な御時勢を生きる、真っ当な自宅メールーサーバーなハッカー諸氏にとっても必須の技術といってもいいであろう。

(続きを読む...)

2008年11月11日

postfix 2.5.5 でのCryus-SASLでのSMTP-AUTH @OpenSolaris

最近新しくOpenSolaris 2008.05で家のサーバーを作っており、cyrus-saslでpam認証するSMTP-AUTHつきのpostfixをコンパイルしたのだが、なぜかちゃんとSMTPが動作しない。
手順はほぼ前にあげたエントリの通り。前は上手くいったのに…
コンパイルしたバージョンは2.5.5なのだが、ポート25に接続しても、ログに「warning: unsupported SASL server implementation: cyrus」と出るだけでうんともすんとも言わない。
うーんなんてこったい。
ちなみにコンパイル時のオプションはCCARGS="-DUSE_SASL_AUTH -I/usr/local/include/sasl2 -I/usr/include/pcre" AUXLIBS="-L/usr/local/lib -lsasl2 -R/usr/local/lib"とこんな感じで特に問題はなさそう。
CCARGSの最後のインクルードパスの指定は、ccがdict_pcre.cのコンパイル中にprce.hが無いとかぬかしたので追加してある。根性で捜して来いよと。プンプン。

(続きを読む...)

2008年9月24日

apache-tomca+apacheで web+Java Servletを作る

先日仕事でJava Servletが動くサーバーを作ったのだが、実行環境であるapache-tomcat自体はバイナリパッケージを落としてきて展開するだけ、と激しく簡単である。
しかしこれではapacheと同じポートで同時に使えない。
どうせなら同時にapacheも使いたいので、apacheとTomcatを連携させるために、ネット上の情報を探したのだが、apache-tomcatを使うだのjakarta-tomcatを使うだのと二通りの情報が錯綜していて良くわからんかった。
そもそもapache-tomcatとjakarta-tomcatの違いがはっきりしなかったのやけど、色々調べた結果、結局この二つは同じ物を指していて、apache-tomcatの古い呼び方がjakarta-tomcatであると便宜的に理解しておいても大丈夫そうだ。
ややこしい話やけど、apache内のjakartaプロジェクト内のtomcat製作プロジェクトで作られたものがjakarta-tomcatで、後にtomcatプロジェクトが格上げされてapache直下のjakartaプロジェクトと同じ位置に来たのでapache-tomcatとなったと言う事らしい。どちらも作っているものは同じである。
apache-tomcatもjakarta-tomcatもどちらもJava Servletである。

(続きを読む...)

2008年8月27日

Javaな密林に植林 / 時は既に新世紀

仕事でJava Servletで動作するWEBアプリケーションなサーバーを作る事になって、Apache Tomcatを触る必要が出てきた。
おまけにそのWEBアプリはPostgreSQLも必要とするらしい。
今まで私はApacheとPHPの人やったけど、仕事で今まであえて避けてきたMysqlやらtexやらを使う必要が出てきて、結果としてこれもまあまあ使えるようになった。
で、「mysqlとTexはまぁまぁ得意」と言えるようになったら、今度はまた避けていたJavaとPostgreSQLまで触ることになって、また密林の未体験ゾーンに足を踏み入れることになった。
いくらSolarisやらNetBSDやらが好きで、家で趣味の一環として色々なシステムを作ってみても、MysqlやTexには仕事の必要に駆られてしか手を出さなかった。
PostgreSQLはまだMysqlと同じ括りになるとしても、今回のJavaなどは一人では絶対手を出そうとしなかったもののひとつだろう。
Sun Microsystems は大好きやけど、その開発物であるJavaはあまり好きになれなかったのだ。

(続きを読む...)

Next »