2009/07/26(日)便利そうだが使えない― milter-manager/dovecot-sieve

2017/10/11 7:28 サーバ運営・管理
弊社では、営業運用として電子メールサーバを稼動させています。
今の事業形態になる前を含め、本格稼動から9年経過し、2003年8月に大幅なシステム改良を顧客のご協力を得て行ったのが現行のシステムな訳ですが、一部ソフトウェアにサポート継続が出来るかどうかの問題が出てきたため、将来的な費用対効果もあって、一部を変更する検討をしていたのですが、、

現在は、
SMTP: Postfix
IMAP/POP: Courier-IMAP
LDA:Courier-maildrop
Virus/Spamscan: ClamAV/SpamAssassin/Amavisd-new
Auth:Cyrus-SASL/Courier Authlib/OpenLDAP
という布陣です。

メールサーバというのは、サービス特性上、1つのソフトウェアのみで構成不能なのが通常で、弊社の場合は9つのソフトウェアを組み合わせて構築しています。更に稼動させるために基本OS含め5つの主なソフトウェア(うち3つが自社開発)を使う必要があり、合計14のソフトウェアで構成していることになります。
Web サーバより、はるかに複雑なのです。

そのうち、稼動負荷の高い Amavisd-new と、将来的なメンテナンスに不安材料を抱える Courier-IMAP,Cyrus-SASL と、メンテナンスコストを大幅低減を狙うため、加えて Courier-maildrop, Courier-Authlib,Cyrus-SASL の代替を探していたところ、候補にしたのは、
・dovecot (Courier-IMAP と Cyrus-SASL を置き換える)
・dovecot-sieve (Courier-maildrop を置き換える)
・既存 ClamAV の milter 対応 (Amavisd-new を取り除く)
・既存 SpamAssassin の milter 対応 (Amavisd-new を取り除く)
・milter-manager (Amavisd-new の代替)

そしてこの5つが実現できることで、 Courier Authlib も不要になり、Courier シリーズ全廃&管理コスト削減という算段だったのですが、、

dovecot-sieve は、Courier-maidrop のように、外部プログラムを呼び出して、フィルタする、ということが、現状ではできません。
これはかなり致命的。
milter-manager で消化することを試みることにしました。milter-manager は ruby 1.8とC の混在環境で稼動するよ うです。

が、設定までは何とか出来るのですが、SMTP コネクションを接続し、milter-manager を呼び出したところで、どういう訳かサーバそのものが I/O デッドロック状態のようになります 。
リセット・再起動しないと、キーボード入力すら受け付けないのです。

ruby のバージョンを 1.8.7 の最新にしてみたり、依存ライブラリ等を最新にしてみたり、上書きインストールをしてみたり、と色々試したのですが、どうもマルチスレッド絡みで根深そうなので、今回は、milter-manager の採用は見送りざるを得ませんでした。

結局置き換え出来たのは、
Courier-IMAP → dovecot
Cyrus-SASL → dovecot
Amavisd-new → ClamAV-milter (ClamAV 標準配布)

の3つで、運用管理するべきソフトが3つ減り、新たに dovecot が加わった形。
dovecot-sieve で外部コマンドが実行可能だと、Courier-maildrop と Courier-Authlib も廃止できて、更に2つ減らせたのだけれど、、
さもなければ、dovecot-deliver で maildrop と同様の機能を提供して頂くとか。現状は外部コマンド実行不可なので、この時点で当環境では dovecot-deliver の採用はできないことが判明。

dovecot-sieve は機能不足で、当環境では採用時期が早過ぎたようです。振り分けだけなら出来るのですけどね。。