2011年7月6日水曜日

お名前.comVPSのマルチドメイン環境でメール受信が出来なくなる

yum updateかけようとすると、clamv周りでエラーが出て更新できなくなったので、関係パッケージ全て削除しました。

・・・すると、マルチドメイン環境でメール受信が出来なくなる。

clamd再インストールしようとしても登録されてるリポジトリが古いのか何なのか、とにかくパッケージ入りません。

$ yum install clamd
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: ftp.kddilabs.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
base                                                               | 2.1 kB     00:00
epel                                                               | 3.7 kB     00:00
epel/primary_db                                                    | 3.7 MB     00:00
extras                                                             | 2.1 kB     00:00
lg-ce5x-main-arch                                                  | 1.9 kB     00:00
lg-ce5x-main-noarch                                                | 1.9 kB     00:00
updates                                                            | 1.9 kB     00:00
updates/primary_db                                                 | 664 kB     00:00
128 packages excluded due to repository priority protections
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package clamd.x86_64 0:0.97-13.el5 set to be updated
--> Processing Dependency: clamav = 0.97-13.el5 for package: clamd
--> Processing Dependency: libclamav.so.6(CLAMAV_PRIVATE)(64bit) for package: clamd
--> Processing Dependency: libclamav.so.6(CLAMAV_PUBLIC)(64bit) for package: clamd
--> Processing Dependency: libclamav.so.6()(64bit) for package: clamd
--> Running transaction check
---> Package clamav-lib.x86_64 0:0.97-1.r1.lg.ce5 set to be updated
--> Processing Dependency: data(clamav) for package: clamav-lib
---> Package clamd.x86_64 0:0.97-13.el5 set to be updated
--> Processing Dependency: clamav = 0.97-13.el5 for package: clamd
--> Running transaction check
---> Package clamav-data.x86_64 0:0.97-1.r1.lg.ce5 set to be updated
--> Processing Dependency: clamav-filesystem = 0.97-1.r1.lg.ce5 for package: clamav-data
---> Package clamd.x86_64 0:0.97-13.el5 set to be updated
--> Processing Dependency: clamav = 0.97-13.el5 for package: clamd
--> Running transaction check
---> Package clamav-filesystem.x86_64 0:0.97-1.r1.lg.ce5 set to be updated
---> Package clamd.x86_64 0:0.97-13.el5 set to be updated
--> Processing Dependency: clamav = 0.97-13.el5 for package: clamd
--> Finished Dependency Resolution
clamd-0.97-13.el5.x86_64 from epel has depsolving problems
  --> Missing Dependency: clamav = 0.97-13.el5 is needed by package clamd-0.97-13.el5.x86_64 (epel)
Error: Missing Dependency: clamav = 0.97-13.el5 is needed by package clamd-0.97-13.el5.x86_64 (epel)
 You could try using --skip-broken to work around the problem
 You could try running: package-cleanup --problems
                        package-cleanup --dupes
                        rpm -Va --nofiles --nodigest

マルチドメイン環境にすると、自動的にamavisdというウイルスチェックソフトにメールのスプールの中身が転送される設定になるようですが、メールチェックはクライアントですればいいので、設定を外す。

こちらを参考にclamdへのスプール転送を外す。
http://d.hatena.ne.jp/pasela/20100420/postfix

が、メール受信できず。

postsuper -r ALL
すれば、メール配信されてくるのですが、
/etc/postfix/main.cf

content_filter
設定をコメントアウトしても、
/var/log/maillog
には
connect to 127.0.0.1[127.0.0.1]:10024: Connection refused
みたいなClamAVが見つかりません的なエラーが出続ける。

どうやら、
/etc/postfix/main.cf
以外にもamavisd関係の設定が残っているらしい。

ということで
grep 'content_filter' ./*

結果、
/etc/postfix/master.cf
/etc/postfix/postfix-pkg-main.cf
という2つのファイルにも
-o content_filter=smtp-amavis:[127.0.0.1]:10024
のような設定がされているので、コメントアウトしてpostfix再起動。

無事にメール受信できるようになりました。

===============
2011-07-11追記

上記だけだとメールの転送が効かなくなります。

/etc/postfix/main.cf

receive_override_options = no_address_mappings
設定をコメントアウトすれば、メール転送も上手くいきます。

が、どうしてそれで上手くいくのかはよく分かりません。
何か弊害が出るようであればお知らせ下さい。

仔細はコメント欄参照。
===============

8 件のコメント:

  1. これやると、メールの転送が効かなくなったりしませんか?

    返信削除
  2. メールの転送ってどういう状況ですか?
    amavisdへのスプールの転送を外しただけなので、それ以外はpostfixとかの設定かな、と思いますが、検証手順お知らせ頂ければ試してみます。

    返信削除
  3. メールの転送と言っているのは、
    お名前.comのVPSコントロールパネル->ドメイン設定->メール->メール転送 、で設定するメール転送のことです。

    コントールパネル上から、メールアカウントを作成し、メール転送の設定を行うと、postfixのvirtual_mailbox_maps、virtual_alias_mapsが更新され、対象のアカウントと転送設定が反映されます。
    が、実際にメールを送ってみると転送されなくなったんですよね。。。

    ただ、全部転送されるないわけではなく、自ドメインからのものは転送きくという中途半端な状態になっています。


    ■状態
    ・main.cf
    mydomain = XXX.com

    ・virtual_alias_maps
    test01@XXX.com tset02@YYY.com

    ■ケース1
    1. test03@ZZZ.comから、test01@XXX.comへメール送信
    2. test01@XXX.comにメールが届く
    3. 転送失敗×

    ■ケース2
    1. test02@YYY.comから、test01@XXX.comへメール送信
    2. test01@XXX.comにメールが届く
    3. 転送失敗×

    ■ケース3
    1. test01@XXX.comから、test01@XXX.comへメール送信
    2. test02@YYY.comにメールが届く
    3. 転送成功○

    ■ケース4
    1. test99@XXX.comから、test01@XXX.comへメール送信
    2. test02@YYY.comにメールが届く
    3. 転送成功○


    ※yum remove で、clamv関連消したときにamavisもお無くなりになったのがまずかったのかなぁ・・・と試行錯誤して色々試してるとこです

    返信削除
  4. こちらでも状況再現しました。

    /etc/postfix/main.cf

    の以下の設定をコメントアウトすれば転送も効くようになりました。

    receive_override_options = no_address_mappings

    よく分かってないのですが、上記がコメントアウトされていない状況だと
    /var/log/maillog
    を見ても転送しようとしていないっぽいです。

    参考)http://www.postfix-jp.info/trans-2.1/jhtml/postconf.5.html
    ==============
    receive_override_options (デフォルト: empty)
    no_address_mappings
    canonical アドレスマッピングや virtual エイリアスマップ拡張、アドレスのマスカレード、自動 BCC (blind carbon-copy) 受信者を無効にします。これは典型的には外部コンテンツフィルタの「前に」指定されます。
    ==============

    これ読んでもよく分かりませんが、no_address_mappings指定をしてしまうと、virtual_alias_mapsが効かなくなるのかな、と思います。
    多分取り外したamavisフィルターが内部的にvirtual_alias_mapsを見に行くような設定になっていて、それを外したモンだから、そもそも転送しようとしてなかったのではないかと想像してます。

    こちらでも自ドメインから送信すると上手くいきましたが、どうして自ドメインなら上手くいくのかはよく分かりません。
    mailコマンドから直接メール送信したので、ローカル内での処理と外部から受信したメールで何やら違うのかな、とは思いますが、よく分かりません。

    いずれにしても、お名前VPSは実サービスの運用には厳しいかもしれませんね。。
    httpdやpostfix勝手に落とされて何も通知してくれなかったり、今回の発端のclamv関係でyum updateでコンフリクトしたり、php5入れようと思ってもやっぱり登録リポジトリでコンフリクトしたり。
    中途半端にマネージドされてるので、いっそまっさらのVPS貸してくれればいいのに・・・。

    返信削除
  5. こちらでも、receive_override_optionsを外して転送がうまくいくのを確認しました。
    ありがとうございます!

    まっさらなVPSは嫌だなと思ってましたが、何かしらいじるならまっさらなほうがいいですね。。。 さくらにしておけばよかったかなと今さらながら思います・・・orz

    返信削除
  6. 本文にもメール転送の注釈を加えておきました。
    色々とコメントありがとうございました。
    今のところ上手くいっていますが、何か弊害が出ればまたお知らせ下さい。

    少なくともお名前は、yumの登録リポジトリがよく分からんことになってますし、メモリ消費するとapacheやpostfixが落とされて再起動もしてくれませんし、サービス運用には厳しいです。

    安くて容量も大きいので自サーバでIP取って外部公開して電気代払うことを考えれば、バグトラッカやSVNなどの開発ツールを運用する分には向いていると思いますが、サービス運用するならさくらとかhetemlの方がいいかもしれませんね。

    お名前の人見てたら改善お願いします!!
    お名前VPSは何をするにもやり辛いです。
    特に以下2点、何とかして下さい~m(_ _)m

    1. httpdやpostfix落とさないで下さい。(少なくともメールか何かで通知して下さい)
    2. yumのパッケージ色々コンフリクトするので、整理して下さい。

    返信削除
  7. お名前VPSは現状からは何もやらんやる予定はない。
    やるなら自己責任で勝手にどうぞな回答でしたよ。

    返信削除
  8. これは探してるものです。取ってもらいました。ありがとうございます。

    返信削除