mdb2で複数のインスタンスを作ったときに同じものだった!

同じホストへ向けてmdb2のconnectをやってもシングルトンみたいな状況になっててテーブルが見つかりませんとか言われて怒られる現象。
公式のマニュアルに載っていました。
複数のインスタンスを作成して異なるデータベースを使用することができない
複数のデータベースを同時に使用しようとすると、 二番目のデータベースに接続した瞬間に最初のデータベースとの接続が失われることに気づかれるでしょう。 これは、DBMS が直近にオープンされた接続を再利用しようとするからです。この問題を解決するには、 DSN の new_link オプション を TRUE にします。
http://72.14.235.104/search?q=cache:Wmj7uSiR24wJ:pear.plus-server.net/package.database.mdb2.faq.html+MDB2+%E8%A4%87%E6%95%B0%E3%80%80%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9&hl=ja&ct=clnk&cd=17&gl=jp&lr=lang_ja&client=firefox-a

513 Relaying denied.

1. courierでメールのリレーが拒否された問題。

courier-mta宛てにメールを送信しようとしたらエラーが帰ってきてしまった。
試験をしていてこのエラーに当たったのだけれど、その環境はちょっと複雑だったりする。

まず、メールを受信したい、coueir-mtaなホストがある。 courier.l2tp.org (192.168.1.1) ってホストだ。
このホストへテストメール送信専用のホストが別にある。 test.example.org (192.168.2.1) ってホストだ。
このとき、テストメールを送ったら以下のようなエラーが帰ってきた。

まずは戻されたメール本文に

 xxx.xxx [xxx.xxx.xxx.xxx]:
 >>> RCPT TO:
 <<< 513 Relaying denied.

/var/log/maillogにはこんなエラーが。

Jun 25 08:50:06 ml115 courieresmtpd: error,relay=xxx.xxx.xxx.xxx,from=,to=: 513 Relaying denied.

2. 単純にコレを解決することもできたり

この、 “513 Relaying denied.”がエラーとして出るのには二つの原因がある。
その問題はメールの配送の仕組みに関わってて、ちょっとややこしい。

まず一つは、送られたメールがインターネット上のどこかのメールアドレス宛で、このメールをあなたのメールサーバを踏み台にして送らせてくださいね、っていうパターン。ぶっちゃけスパムとかこの方法で踏み台にしてくる。
もう一つは正常なパターン。この送っているメールはあなた宛てのメールですよ。だからあなたに送っています、受け取ってください、というメール

まず前提の考え方として、一般的には他のメールサーバへの転送は拒否するのが普通だ。コレを無条件に許可しているとスパムの踏み台になっちゃう。
そしてそれを決めているのは smtpaccess/default のファイルで決めてたりする。
( /usr/local/etc/courier/smtpaccess/default を変更。)
参考: makesmtpaccess, makesmtpaccess-msa | courier-mta.org

このファイルに転送を許可するホストを書いておけば良い。
仮にスパムではなく、信頼されたメールサーバからのメールを転送してあげたいときにはここにアドレスを列挙すれば良い。
そして編集が終わった場合には makesmtpaccess を実行して、smtpaccessディレクトリをもとに作成される、couerierが読み込むバイナリ形式のsmtpaccess.datを更新してやる。

また後者のケース、courier.l2tp.org が受け取るべきメールだった場合にちゃんと受け取るようにさせてあげたい。
このときにいじるのは esmtppercentrelay.dir/default のファイル。ここに受け止めるべきドメインを列挙しておけば良い。
そして編集が終わったらこちらもバイナリファイルを作成しておく。バイナリを作成するコマンドは makeacceptmailfor。さっきと違って編集するファイルと実行ファイルの名前がちょっと違うので注意。
参考: makeacceptmailfor | courier-mta.org

以上二つのケースにおいては、それぞれBDB形式のバイナリを作成した場合、courierの再起動は不要。

3. まとめ

513 Relaying denied.が出ちゃった場合には、courier側でアクセス制限してはじいてる。なのでそれに風穴を開けてやる必要がある。
その方法は二つ。ひとつはIPアドレスで無条件に通してやる。もう一つはesmtppercentrelay.dirへ記述してやる。そしてどちらの場合もmakeしてやることを忘れないこと。