昨日の続き.Postfix+Postfix.admin+MySQL+Dovecotの組み合わせで,バーチャルドメイン,SMTP認証,TLS暗号化によるメールサーバ構築中なのだが,Spam及びウイルス対策として,amavisd-new+clamav+spamassassinを組み込むことになった.
ClamAVのインストールと設定は,比較的簡単であり,amavisd-newをインストールすればspamassassinもインストールされるため,比較的順調に作業は進んだ.
ほぼ設定が完了したところで,テストウイルスを添付してクライアントで送受信を行ったところ,どちらもメールは削除された.これでメールウイルス対策は問題ないだろう.続いてSpam判定のテストを行うために,テスト用Spamメールをサーバに送信してみた.クライアントで受信したところ,なんとSpam判定されていない!
受信したメールのヘッダには,amavisd-newを経由した証拠である「X-Virus-Scanned: amavisd-new at …」が存在しているため,フィルターは経由しているようだった.
とりあえずログを見てみると,なんとしっかりとSpamと判定している!それでは,なぜメールに,Spam関係のヘッダ追加や,amavisd.confで指定してあるメールタイトルの変更が起こらないのか?いままで,設定してきた他のサーバでは,現在の設定で問題なくSpam判定ができていたのに…
そこから,ネットをさまよい,各種設定ファイルをいじくり,サーバの再起動を繰り返し,テストを行うという果てしない放浪の旅が始まった.
うまくいっていた以前のサーバと異なるのは,今回はバーチャルドメインによる運用という点だ.従っておそらく原因は,バーチャルドメインにあるのだろう.ネット上には,やはりバーチャルドメイン運用者で同じような悩みを持った者もいたのだが,なぜかその質問にはレスがついていない.困った…
ほぼあきらめかけていた頃,ネット上に「X-Spamのヘッダが入らない」という同じ悩みを持つブログを発見した.それはまさにこの問題に対する直接的な答えだった.その答えとは
ところが今回はバーチャルドメインであり,複数のドメイン名を扱っているため,$mydomainはドメイン省略名としてあまり意味がなかったのだ.この@local_domains_mapには,バーチャルドメインで扱っているすべてのドメイン名を指定する必要がある.
テストの時に使用していたメールアドレスが,偶然にも,$mydomainで指定してあったドメイン名と異なっていたため,Spam判定はしても,そのメール自体には何の変化もなかったわけだ.
とりあえず@local_domains_mapにすべてのドメイン名を指定して,amavisdを再起動し,再びテスト用のSpamメールを送信してみた.すると今度は,見事にSpam判定のヘッダが追加され,タイトルには,Spamであることを知らせる文字列が冒頭に追加されていた.できた\(^O^)/
というわけで,バーチャルドメイン運用でSpam判定のできない方は,amavisd.confの@local_domains_mapをチェックしてみてください.<完>
ClamAVのインストールと設定は,比較的簡単であり,amavisd-newをインストールすればspamassassinもインストールされるため,比較的順調に作業は進んだ.
ほぼ設定が完了したところで,テストウイルスを添付してクライアントで送受信を行ったところ,どちらもメールは削除された.これでメールウイルス対策は問題ないだろう.続いてSpam判定のテストを行うために,テスト用Spamメールをサーバに送信してみた.クライアントで受信したところ,なんとSpam判定されていない!
受信したメールのヘッダには,amavisd-newを経由した証拠である「X-Virus-Scanned: amavisd-new at …」が存在しているため,フィルターは経由しているようだった.
とりあえずログを見てみると,なんとしっかりとSpamと判定している!それでは,なぜメールに,Spam関係のヘッダ追加や,amavisd.confで指定してあるメールタイトルの変更が起こらないのか?いままで,設定してきた他のサーバでは,現在の設定で問題なくSpam判定ができていたのに…
そこから,ネットをさまよい,各種設定ファイルをいじくり,サーバの再起動を繰り返し,テストを行うという果てしない放浪の旅が始まった.
うまくいっていた以前のサーバと異なるのは,今回はバーチャルドメインによる運用という点だ.従っておそらく原因は,バーチャルドメインにあるのだろう.ネット上には,やはりバーチャルドメイン運用者で同じような悩みを持った者もいたのだが,なぜかその質問にはレスがついていない.困った…
ほぼあきらめかけていた頃,ネット上に「X-Spamのヘッダが入らない」という同じ悩みを持つブログを発見した.それはまさにこの問題に対する直接的な答えだった.その答えとは
amavisd.conf:すなわちamavisdのローカルドメインの指定にあった.デフォルトではここの部分は
# @local_domains_maps = # using ACL lookup table
# ( [ ".$mydomain", 'sub.example.net', '.example.com' ] );
@local_domains_maps = ( [ ".$mydomain"] );となっているはずで,このローカルドメイン変数$mydomainには,最初に取得したドメイン名を設定ファイルの冒頭で指定していた.
ところが今回はバーチャルドメインであり,複数のドメイン名を扱っているため,$mydomainはドメイン省略名としてあまり意味がなかったのだ.この@local_domains_mapには,バーチャルドメインで扱っているすべてのドメイン名を指定する必要がある.
テストの時に使用していたメールアドレスが,偶然にも,$mydomainで指定してあったドメイン名と異なっていたため,Spam判定はしても,そのメール自体には何の変化もなかったわけだ.
とりあえず@local_domains_mapにすべてのドメイン名を指定して,amavisdを再起動し,再びテスト用のSpamメールを送信してみた.すると今度は,見事にSpam判定のヘッダが追加され,タイトルには,Spamであることを知らせる文字列が冒頭に追加されていた.できた\(^O^)/
というわけで,バーチャルドメイン運用でSpam判定のできない方は,amavisd.confの@local_domains_mapをチェックしてみてください.<完>