amavisd-newからClamSMTPへ
先日より、当自宅メールサーバー(Postfix)の送受信ウィルスチェックとして、ClamAV+amavisd-newという環境で動かしていましたが、このamavisd-newのメールフィルタを入れることで、外部からSMTPサーバーとして当サーバーを使った場合や、自サーバーでのPHPやcgiからのメールの送信が約15秒程度遅延しておりました。
実際の使用において別に15秒くらい「ええじゃないかの大乱舞」だったわけですがどうも気に入らないので、ホストの名前解決に時間がかかってるかとホスト名を変えたりホストの名前解決順を変えたり色々試行錯誤しても解決しませんでした。
amavisd-newのフィルタを外せば即時送信されるので、amavisd-newが怪しく、この際ということで調べたら出てきたClamSMTPというフィルタを使用してみることにしました。
以下、自分用の覚書
ClamAVのインストール・設定と、freshclamの設定も終わっているものとする。
サーバーOSはCentOS5.0
- clamsmtpのSRPMを入手
# wget http://www.inet.lt/clamsmtp/clamsmtp-1.9-1.src.rpm
- clamsmtpのRPMをビルド
# cd /usr/src/redhat/SPECS # rpmbuild -bb --clean clamsmtp.spec
- clamsmtpのRPMをインストール
# cd ../RPMS/i386 # rpm -ivh clamsmtp-1.9-1.i386.rpm
- clamsmtp.confの編集
# vi /etc/clamsmtp.conf
OutAddress: 10026 ← コメントアウトを削除
Listen: 127.0.0.1:10025 ← コメントアウトを削除
Header: X-Virus-Scanned: ClamAV ← コメントアウトを削除して編集 - ClamSMTPの起動
# /etc/init.d/clamsmtpd start
- ClamSMTPをサービスに追加
# chkconfig --add clamsmtpd
- ClamSMTPを自動起動に追加
# chkconfig clamsmtpd on
- Postfixの設定を変更(amavisd-new→ClamSMTPD)
# vi /etc/postfix/master.cf
以下を全てコメントアウトまたは削除
127.0.0.1:10025 inet n – n – – smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000以下を追加
scan unix – – n – 16 smtp
-o smtp_send_xforward_command=yes
127.0.0.1:10026 inet n – n – 16 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o smtpd_authorized_xforward_hosts=127.0.0.0/8# vi /etc/postfix/main.cf
content_filter=smtp-amavis:[127.0.0.1]:10024
下記へ変更 ↓
content_filter=scan:127.0.0.1:10025 - Postfix再起動
# /etc/rc.d/init.d/postfix restart
後は、一通り動作確認。
・自サーバーから自アカウントへ発信
・自サーバーから外部ISP等のメールへ発信
して、メールヘッダに
X-Virus-Scanned: ClamAV
と表記があればOK
念のために、無害のウィルスを添付してメールが届かなければOK
(/etc/clamsmtp.conf内のVirusAction:でウィルスがあった場合の受信者への通知を行うスクリプトを作って通知するようにしてもいいですが、僕の場合は通知しないようにしています)
で、一応最後にamavisd-newを削除。
# yum -y remove amavisd-new
結果的に、メール送信にウィルスチェックを行っても遅延は発生しないようになり、1~2秒程度で受信者へ届くようになりましたとさ[ピース/]
めでたしめでたし[にこっ/]