qmail+vpopmail環境にPostfixを導入する(その1)

目標:現在のサーバー環境:qmail+vpopmail+Spamassassin+Courier-IMAP環境に、Postfixを導入しSMTPフロントエンドとして稼働させる。

期待できる効果:外部向けSMTPで現行技術への対応の簡素化・SPAM対策の強化。

まず、SPAM対策の強化として、こちら(http://k2net.hakuba.jp/targrey/)のページで紹介されている、taRgrey手法を利用することにします。taRgreyとは、動的IPっぽいアドレスからの接続に対して、tarpitting(応答の故意遅延)を行い、遅延に対応して待機した場合は受信開始、待機しなかった場合はGreylistを適応して再送させ、再送された場合は受信するような方式です。SPAM対策と、誤判定への対処のバランスが非常に良いと思われ、今回の導入となりました。

続きを読む

vpopmail環境での.qmail-default

こちら(http://lab.z-nix.jp/mt/archives/2005/11/qmaildefault.html)のブログでも紹介されているが、vpopmail環境で.qmail-defaultを使って、プログラム起動をしたいとき、安直に以下のようにすると、実在するアカウントへのメールが配送されない問題が起きる。ついこの前僕も「存在しないユーザーの時にプログラムを起動したいんだけど、どうしたらいいですか?」と聞かれてはまったのでメモ。

| /some/where/bin/program

vpopmailの場合、.qmail-defaultのvdelivermailによって、配送先ドメインでの各ユーザーへの配送が行なわれるため、安易に変更すると配送されなくなる。つまり、.qmail-defaultで単純にプログラムを起動はできない。単純に起動する場合は、各ユーザーへの.qmail-xxxファイルを作成する必要がある。ユーザー数が多い場合は大変。幸い今回はユーザー数が多くないので、.qmail-xxxファイルをユーザー数分作成して対応できたが、できない場合は、vdelivermailの最終引数として、プログラム起動専用メールアドレス(デフォルトの配送先となる)を指定しておき、プログラム起動専用メールアドレスに対する.qmail-xxxファイルでプログラムを起動する。たぶんうまくいくと思うけど、転送が入ってるから$USERなんかが変わるかも知れない。今度確認しておこう。

Postfixをソースからインストール

Postfixで、taRgreyな感じのサーバを立ててみたところ、はまった箇所をメモしておく。

qmail+vpopmailからの移行を考えているので、qmail+vpopmailを残しつつ、Postfixを導入して、SMTPサーバを置換する。

  • ソースコードMakefile作成時、sasl関連のライブラリの場所を指定する必要有り。最初何もせずに-lsasl2と-DUSE_SASL_AUTH -DUSE_CYRUS_SASLだけでコンパイルしたら、SMTP-AUTHでsaslが見つからないようでエラーになった。原因が分からなかったのでCentOSSRPMを持ってきて、中の.specファイルを調べると、ヘッダとライブラリフォルダが指定されてた。
  • '-DDEF_MAILQ_PATH=\"/usr/bin/mailq.postfix\"'系の定義を使うとき、外側のクォートをダブルクォートにしていたが、それだとコンパイルでエラーになる。シングルクォートを使うとOK。
続きを読む

Linux alternatives で選択できる項目を作る

超久々で、はてな記法なんかを忘れてます。

最近のRedhatLinuxでは、alternativesコマンドでイロイロ切り替えられるようになってます。が、ソースコードから自分でインストールした場合なんかは、自分で登録しないと使えません。しかも、インストール時に工夫が必要です。

今回は、自分でインストールしたPostfixを登録することにします。

まず、Postfixのビルドはマニュアルを見ながら何とか片付けて、インストールの段階でパスを聞かれるので、バイナリ等のパスはそれぞれ、○○.postfixなんかで設定してインストール。終わったら、本題に入ります。
RPMPostfixが入ってる場合は不要)

超簡単。

[root@hatena hatena]# /usr/sbin/alternatives --install /usr/sbin/sendmail mta /usr/sbin/sendmail.postfix 30
                --install [バイナリのシンボリックリンク名][名前][指定したいバイナリ本体][優先度]
続きを読む

WAMP/WAPP開発環境

最近、久しくWinの開発環境に入ってたPHPをアップデートしてないので、もうすぐ5.2.4が出るらしいけど、5.2.3にアップデートしてみた。けれど、なぜかエクステンションのDLL関連でエラー。なんでやーと思いながら、調べてみるけど、なかなか分からない。同じようなエラーに遭遇している人もいるみたいだけど、解決方法は書いてなかった。うーん、と悩みつつ、モジュールを1個ずつ追加して確認してみることに。

続きを読む

VBからOutlookを扱うメモその1

いろいろあって、Outlookの方も自動化できないか調査。一応、MSMAPI32.dllの中に、HrGetAcctManagerなる関数を発見。んでもって、MSDNのヘルプにも、IOlkAccountManagerとか、OE見たいな感じの操作ができるインターフェースがあった。よく分からないなりに、OEAcct.odlをまねしてOlkAcct.odlとか作って、ビルドしてみると普通にできた。(CLSIDはちょいと変更)
で、OE見たいに、DllImport("MSMAPI32.dll"〜)て感じでHrGetAcctManagerを呼び出す関数を定義して見たけど、呼び出すときになぜかエラー。GetLastWin32Errorとかで確認してみると、FileNotFoundなエラーらしいけど、どこか分からなかった。
分からないなら、やっぱりVCで作って見ないとダメかなぁ、と思いつつ、次回へ続くかも知れない。