2008/03/08(土)FreeBSD 7.0 における Cyrus-SASL インストール
2017/10/11 8:29
google などで検索すると結構出てくるのですが、以下のようなログを /var/log/maillog に出します。
Mar 7 04:27:34 clione postfix/smtpd[5267]: warning: xsasl_cyrus_server_get_mechanism_list: no applicable SASL mechanisms
Mar 7 04:27:34 clione postfix/smtpd[5267]: fatal: no SASL authentication mechanisms
Mar 7 04:27:35 clione amavis[2970]: (02970-07) (!)FWD via SMTP: -> , 451 4.
5.0 From MTA([127.0.0.1]:10025) during fwd-connect (Negative greeting: at (eval 103) line 442, line 37.): id=02970-07
Mar 7 04:27:35 clione postfix/master[3021]: warning: process /usr/libexec/postfix/smtpd pid 5266 exit status 1
Mar 7 04:27:35 clione amavis[2970]: (02970-07) Blocked TEMPFAIL, -> , Message-ID: <20080306184755.9175867841@clione.lifekernel.ne.jp>, mail_id: XLLnLafANNab, Hits: -, 1298 ms
Mar 7 04:27:35 clione postfix/master[3021]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
Mar 7 04:27:35 clione amavis[2971]: (02971-04) (!)FWD via SMTP: -> , 451 4.5.0 From MTA([127.0.0.1]:10025) during fwd-connect (Negative greeting: at (eval 103) line 442, line 34.): id=02971-04
SASL ライブラリが上手く動作しないと出る現象。
ところが本当の原因は /var/log/maillog をみたのでは駄目。
/var/log/messages を眺めましょう。すると直接的原因が判ります:
Mar 7 05:37:33 clione postfix/smtpd[8462]: Could not find a dlname line in .la file: libsasldb.la
Mar 7 05:37:33 clione postfix/smtpd[8462]: Could not find a dlname line in .la file: libdigestmd5.la
Mar 7 05:37:33 clione postfix/smtpd[8462]: Could not find a dlname line in .la file: libotp.la
Mar 7 05:37:33 clione postfix/smtpd[8462]: Could not find a dlname line in .la file: libgssapiv2.la
Mar 7 05:37:33 clione postfix/smtpd[8462]: Could not find a dlname line in .la file: libplain.la
Mar 7 05:37:33 clione postfix/smtpd[8462]: Could not find a dlname line in .la file: liblogin.la
Mar 7 05:37:33 clione postfix/smtpd[8462]: Could not find a dlname line in .la file: libldapdb.la
これは、shared ライブラリが構築されていないと出ます。
調査すると、どうも Cyrus-SASL に同梱されている libtool のバージョンが古過ぎて(1.35) 、FreeBSD 7.0 にが対応していないようです。
pakeages にて libtool-1.5.24 (2008/03/08 現在)をインストールし、configure 後に、libtool を削除して、pakages でインストールした libtool を使用するようにすると、あっさり解決しました。
具体的には、
# ./configure
# rm libtool
# ln -s /usr/local/bin/libtool
としてから、通常の make , make install をやれば良いです。
2008/03/07(金)DBD::Pg 関係 (Perl 5.8.8)
2017/10/11 8:30
今日(3/7) 現在の最新は 2.2.2 。
FreeBSD + PostgreSQL 8.3.0 という環境ですが、DBD::Pg のバージョンによっては、
Segmentation fault を起こして、正常に動作しません。
当方で確認したのは、以下のバージョン組み合わせです。
FreeBSD 6.3R, DBD::Pg 2.1.3 ×
FreeBSD 6.3R, DBD::Pg 2.1.2 ×
FreeBSD 6.3R, DBD::Pg 2.1.0 ○
FreeBSD 6.3R, DBD::Pg 2.0.0 ○
FreeBSD 7.0R, DBD::Pg 2.2.0 ○
FreeBSD 7.0R, DBD::Pg 2.2.2 ○
FreeBSD 6.3R, DBD::Pg 2.2.2 ○ (2008/03/08 追記)
○は正常動作、×は Segmentation fault で使い物にならないバージョン。
いずれも Perl のバージョンは 5.8.8、PostgreSQL のバージョンは 8.3.0、DBIのバージョンは 1.602 です。
DBD::Pg が動作しない場合、最悪は DBD::PgPP で代用するという手段もあります。
機能的には大体同じですが、DBD::PgPP の方は PostgreSQL のライブラリに依存しない分、たぶん遅いでしょう。プラットフォームに完全に依存しないで済む、という大きなメリットもありますが。
2008/03/06(木)FreeBSD 7.0 における Postfix
2017/10/11 8:32
2.4.7 をインストールしようとしたら、make の最初の時点で
ATTENTION:
ATTENTION: Unknown system type: FreeBSD 7.0-RELEASE
ATTENTION:
*** Error code 1
Stop in /******/postfix-2.4.7.
*** Error code 1
Stop in /******/postfix-2.4.7.
のようなエラーになります。
2.5.1 では、無事に構築できました。
2008/03/06(木)FreeBSD 7.0 における Courier-IMAP
2017/10/11 8:31
これを4年前から採用して、運用しています。
同様なものに Cyrus-IMAP があるが、これは格納形式が独自で汎用性が無いようなので、却下。
蛇足ですが、mailbox 形式でメールサーバに電子メールを格納すると、サーバ負荷が上がって、業務用には厳しいものがあります。
今回初めて、Courier-IMAP の 4.3.0 を試験的に採用してみたわけだが、構築テストで一部問題が、、
configure を行い、make(FreeBSD の場合は gmake) を行うまでは良いのですが、
その後の gmake check で、
*** [check-am] Alarm clock: 14
これが、waitlib のところで出ます。テストが中断してしまい、どうやっても駄目。
挙動見ると、一定時間待ったあとに、シグナルを発生するか、というテストのようだが、よく判らない。。
数時間あれこれ configure を変えたり、コンパイルオプションを変えても駄目だったので、
このテストを強制スキップするように Makefile 書き換えてみたら、他の部分はすんなりOK。
とりあえずインストールして実験用サーバにて様子見ることにしました。
ちょっと本番環境に適用するのは怖いものがあるので・・・
2008/03/05(水)FreeBSD 7.0R の評価を
2017/10/11 8:33
挙動不審に陥らないかどうか。新しいOSに既存のソフトウェアがどこまで対応しているか、というところを見極めるのが主な目的です。
2008/03/02(日)ImageMagick の最新バージョン
2017/10/11 8:34
ところが、 6.3.7 あたりから FreeBSD 上で動作させると
/libexec/ld-elf.so.1: /usr/local/lib/libMagick.so.10: Undefined symbol "pthread_equal"....
のようなエラーが出て動作しない。
これは、FreeBSD 固有の問題らしいです。
スレッド動作させる場合、FreeBSD の場合は、libc ではなく、libc_r をリンクするように構築しなければならないはずなのですが、
ImageMagick の configure がおかしいので、そうならないのです。これがエラーの原因。たぶん libc をリンクしてしまっているんでしょう。
configure スクリプトを修正すればいいのですが、修正部分を調べるような余裕ないので、仕方なく
./configure --with-perl --without-threads
としています。たぶん、Imagemagick の動作は重くなるでしょうが。。
〔追記 2008/03/11〕
その後、FreeBSD 7.0R をインストールしたマシンで構築してみると、上手くいくようです。
もう少し様子見します。
2008/02/29(金)FreeBSD 7.0R リリース
2017/10/11 8:35
当初の予定より2ヶ月遅れです。FreeBSD 的には平均的な遅延。。
http://www.freebsd.org/releases/7.0R/announce.html
ここしか情報がない(最近、和訳してくれないですつーか)のですが、機械翻訳をかいつまんでみると。。。:
・サポートプラットフォーム= amd64,i386,ia64,pc98,powerpc
近日中にsparc64 版もリリース予定
※通常のAT互換機ベースものの他に、昔のPC-9821シリーズとApple の PowerPC が使えます
・SMP環境において、FreeBSD 6.x 比で 350% から 最大 1500% のパフォーマンス向上。
Linux 2.6.22 or 2.6.24 比で 15% の性能向上。
#Linux のパフォーマンステストはあまり信用できないけどね。ちょっと処理の中身聞いちゃうと。。
※SMP というのは、2つ以上CPUが乗っかっている機器を指します
・sun の(恐らく solaris のことだろう) ZFS ファイルシステムを実験的にサポート
・SCTP(Stream Control Transmission Ptotocol) の実験的サポート
※IP電話に使われることを意図している通信プロトコルですが、どの程度普及しているかは不明
・ワイヤレスLAN(IEEE 802.11) サポートの様々な改良
・バイナリアップデートをサポートする freebsd-update(8) が、新リリースアップデートに標準対応
・GUI環境べースを X.Org 7.3, KDE 3.5.8, GNOME 2.20.2 に変更
・同梱 GNU Cコンパイラを 4.2.1 に変更
・BIND を 9.4.2 に変更(6.x は bind 9.3系)
・nForce なイーサネットドライバが nve(4) から nfe(4) に変更。
これで昨年までに販売された多くの nForceなマザーには標準対応したと思われる
・OpenSSL が 0.9.7e から 0.9.8e に変更
・pf が 3.7 から 4.1に変更。これでパフォーマンスの大幅向上が期待できる
他にもいっぱいあるようですが、きりが無いので割愛。
今回は性能・機能向上に精力が注がれた感じで、安定度の方はどうか(現時点ではは使いものになるかどうかは、実際に使ってみないと判らない)という状況です。
2008/02/18(月)putty よりも簡単に SSL 通信を実現する stone
2017/10/11 8:36
やはり、日本人開発者による日本語のドキュメントはいいです。 → http://www.gcd.org/sengoku/stone/Welcome.ja.html 〔Simple Repeater `stone' 〕
FreeBSD では、package や ports でインストールできます。(個人的には余計な起動ファイルまで入ってしまうのですが orz)
Windows 98/2000/NT/XP 版もあるようです。
SSL 通信するためには、自己署名の証明書(いわゆるオレオレ証明書)の用意が最低限必要。
これは随所に提示されているので、割愛するとして、、、
コマンドラインでも設定できるが、通常は、設定ファイルを作成し、それを指定して起動するほうがよいです。
単純に以下の例を想定して簡単にまとめてみると、、
こんな感じです。
クライアント側がサーバA、サーバ(中継も可能)側が、サーバB。
中継(簡単なゲートウェイ)もでき、こうすれば、外部からLAN内のサーバにアクセスさせることも可能。
こういう構成のセキュリティ対策は、またべつの話なので、ここでは割愛します。
この設定で、サーバAからサーバBを経由して、サーバC、D、E,Fへアクセスが出来るようになります。
設定のポイントは、アクセスしたいサーバの代わりに localhost の特定ポート経由で(どのアプリケーションも使っていない空きポートにする必要がある)をアクセスすることで、 stone を通して目的のサーバ、ポートをアクセスするようにする、ということ。
上図の場合、サーバAがlocalhost:9001 へアクセスすることで、stone が サーバBのポート3231へ接続をし、サーバB側では、ポート 3231 へやってきた接続を、サーバCのポート1230 へ転送するという動作を行います。
サーバB自身へ接続したい場合は、例えば、サーバCの代わりに localhost とすればサーバBでは、localhost:1230 で サーバA localhost:9001 との通信が可能になるわけです。
SSH トンネルと同じようなことをやっているわけです。
サーバBからサーバAにstone を使って接続する場合は、設定をもう一対用意するのが簡単でしょう。
2008/02/16(土)PostgreSQL 8.3.0+ slony-I
2017/10/11 8:38
前評判どおり、更新系の速度が格段に向上しています。
pg_dump にて明示的なカラム付きで SQL 文出力した約107,000件のデータベースの復旧が約6時間(7.4系)→10分(8.3系) です。
更に、8.2から dbmirror がサポートされていなく、調査したら、「代わりに Slony-I を使いなさい」ということになっているので、仕方なくこれを使うことに。。
#この slony が一番填まりましたつーか。。
先ず、postgreSQL 8.3 は、スレッドセーフ対応になるよう構築する必要があります。
これは、 slony?Tを動作させるために必要。こんな感じ:
$ ./configure --with-perl --with-openssl --with-libxml --with-libxslt --enable-thread-safety
(xml サポート使わない場合は、--with-libxml と --with-libxslt は不要)
$ gmake
$ gmake check
# gmake install
8系になって、オプション設定などが少し変更になっています。
・ initdb は、--no-locale の代わりに --locale=C を指定
・ initdb で構築したディレクトリに生成される postgresql.confにて、
listen_addresses = 'localhost,稼動サーバのIPアドレス1,稼動サーバのIPアドレス2,....'
のように指定。複数のIPアドレスを持つサーバであれば、公開するIPアドレスをカンマで区切って指定。
・ initdb で構築したディレクトリに生成される pg_hba.conf にて、IPアドレスは、CIDR 形式でしか指定できない。
・ pg_ctl または postgres(postmaster) の起動オプションの -i は意味が無くなる。
・ syslog 機能はデフォルトで有効。実際に稼動させるための設定は、postgresql.conf 内で該当項目を設定。
・ アクセス権は USER の拡張概念である ROLE(ロール)という概念である(使う分には今までとさほど変わらない)
slony ?Tは、以下のような感じでよいでしょう。
$ ./configure --prefix=/usr/local/pgsql --with-perltools
$ gmake
# gmake install
slony-Iの設定は、以下が参考になります。
31 Slony-Iでデータベースをレプリケーション 〔マイコミジャーナル〕
32 Slony-Iのslonikコマンドラインユーティリティ 〔マイコミジャーナル〕
Slony-I HEAD_20050613 ドキュメント 〔日本 PostgreSQL ユーザ会〕
が、しかし、実運用時への適用は注意が必要。
・ サーバ設定に localhost は使わないほうがよい。IPアドレスの指定は可能。ホスト名指定の場合はフルのFQDNで。
・ パラメータ指定に 必ずカンマが要るところと、決してカンマをつけてはいけないところが随所にあるので、間違わないように例示をよく確認すること。← これに数時間填まったので。。orz
・ 指定クラスタ名に _(アンダーバー)を先頭につけたものが、該当データベースのスキーマとして新規追加される。
(造りとしては、上手いやり方だ。既存スキーマに全く影響与えないので)
これはマスター側にもスレーブ側にも追加される模様。設定ミスなどで削除するときは、SQL文の DROP SCHEMA が使える。
・ dbmirror 同様、非同期レプリケーションだが、その確認周期はすこぶる短い(2秒がデフォルト)。環境によっては、周期を長くする必要があるだろう。
一度動作し始めると、すんなりレプリケ-ションされます。dbmirror と違ってタイムラグが殆どありません。(この点は 8.3 だから、というのもあるかもしれない)
2008/02/04(月)FreeBSD 6.3R へ samba 3.0.28 をインストール
2017/10/11 8:57
どうも Windows系が絡むと、メンテナンスもややこしくなるので嫌なのだが、必要に迫られて仕方なく。。
1) 必須の パッチ版 libiconv をインストール
ここ から libiconv の最新版をダウンロード。
(最新版 は 1.12 の模様)
ここ から、パッチを手に入れる。
上記のサイトにも説明されているですが、
$ gzip -dc libiconv-1.12.tar.gz | tar xvf -
$ cd libiconv-1.12
$ gzip -dc ../libiconv-1.12-ja-1.patch.gz | patch -p1
として、パッチを当てて、
$ ./configure
$ make ; make check
$ su
# make install
として、インストール。あまりお勧めはしないが、上記工程全てをを root でやっても大丈夫です。
2) samba のインストール
Windows 系が絡むソフトウェア特有の文化があって、各種説明があまり的確にはなっていません。
正直、かなり填まりました。
# tar xvzf samba-3.0.28.tar.gz
# cd samba-3.0.28/source
# ./configure --with-syslog (syslog を有効にする)
--with-winbind (Windowsユーザと unix ユーザの統合ログイン可にする)
--with-acl-support (acl を有効にする)
--with-smbwrapper (smpsh を有効にする)
--with-automount (automount サポート)
--with-utmp (アクセス記録収集をサポート)
--disable-cups (cupsを無効:プリンタ共有しなければ使わない)
--with-libiconv=/usr/local
--with-configdir=/usr/local/etc (smb.conf を置きたいディレクトリ名)
--with-pam
(./configure の部分は、便宜上複数行に分けているが、実際は、半角スペースで区切って1行にして一気に入力)
# make
# make install
3) 動作環境の整備
・/etc/inetd.conf に以下の1行追加。
swat stream tcp nowait/400 root /usr/local/samba/sbin/swat swat
・このあと、inetd を再起動(inetd を使っていない場合は、有効にするとよい)
・/usr/local/etc/rc.d に、samba.sh などのファイル名で、以下のスクリプトを作成
#!/bin/sh
#
smbspool=/var/spool/samba
pidfiledir=/usr/local/samba/var/locks
smbd=/usr/local/samba/sbin/smbd
nmbd=/usr/local/samba/sbin/nmbd
winbindd=/usr/local/samba/sbin/winbindd
# start
if [ "x$1" = "x" -o "x$1" = "xstart" ]; then
if [ -f $smbd ]; then
if [ -d $smbspool ]; then
rm -f $smbspool/*
fi
echo -n ' Samba 3.0.28 '
$nmbd -D
$smbd -D
$winbindd
fi
# stop
elif [ "x$1" = "xstop" ]; then
kill `cat $pidfiledir/smbd.pid`
kill `cat $pidfiledir/nmbd.pid`
kill `cat $pidfiledir/winbindd.pid`
# restart
elif [ "x$1" = "xrestart" ]; then
$0 stop
$0 start
fi
(編集後は、実行権を付与するのを忘れずに)
4)動作環境の設定
いきなり smb.conf を作っても良いが、日本語ドキュメントが有償のものばかりで、敷居が若干高いので、GUI インタフェースの swat を使う。
http://(インストールしたサーバ):901/
で、認証を要求されるが、ここでは、wheel グループに所属するunix アカウントとそのパスワードにてログインすると、ログインできます。
備忘録的なヒント:
・SHARE 属性で、通常の WindowsXP にてファイル共有が可能になる
・Windows XP からの共有アクセスは、ユーザ、グループ共に nobody になる模様。
(なので適当な権限設定とセキュリティ対策を行うこと。)
・設定変更後は、上記スクリプトにて restart するのが確実