Fedora 24
Sponsored Link

Postfix + Clamav + Amavisd2016/06/29

 
Postfix と Clamav を連携させて 送受信メールをリアルタイムスキャンできるように設定します。
[1]
[2] Amavisd および Clamav Server をインストールして Clamav Server を起動します。
[root@mail ~]#
dnf -y install amavisd-new clamav-server clamav-server-systemd
[root@mail ~]#
cp /usr/share/doc/clamav-server*/clamd.sysconfig /etc/sysconfig/clamd.amavisd

[root@mail ~]#
vi /etc/sysconfig/clamd.amavisd
# 1, 2行目:コメント解除し変更

CLAMD_CONFIGFILE=/etc/clamd.d/
amavisd.conf

CLAMD_SOCKET=/var/run/
clamd.amavisd
/clamd.sock
[root@mail ~]#
vi /etc/tmpfiles.d/clamd.amavisd.conf
# 新規作成

d /var/run/clamd.amavisd 0755 amavis amavis -
[root@mail ~]#
vi /usr/lib/systemd/system/clamd@.service
# 最終行に追記

[Install]
WantedBy=multi-user.target
[root@mail ~]#
systemctl start clamd@amavisd

[root@mail ~]#
systemctl enable clamd@amavisd

[3] SELinux を有効にしている場合、Amavisd や Clamscan を起動/動作させるには許可ルールの追加が必要です。
[root@mail ~]#
dnf -y install checkpolicy policycoreutils-python-utils
[root@mail ~]#
vi amavisd.te
# 以下の内容で新規作成

module amavisd 1.0;

require {
        type antivirus_exec_t;
        type init_t;
        type razor_port_t;
        type antivirus_var_run_t;
        type amavisd_send_port_t;
        type antivirus_db_t;
        class file { append create getattr execute_no_trans ioctl link open read rename setattr unlink write };
        class dir { add_name create read remove_name setattr write rmdir };
        class tcp_socket name_connect;
        class sock_file write;
        class process execmem;
}

#============= init_t ==============
allow init_t antivirus_exec_t:file { execute_no_trans ioctl };
allow init_t amavisd_send_port_t:tcp_socket name_connect;
allow init_t antivirus_db_t:dir { add_name create read remove_name setattr write rmdir };
allow init_t antivirus_db_t:file { append create getattr ioctl link open read rename setattr unlink write };
allow init_t antivirus_var_run_t:file { create write };
allow init_t antivirus_var_run_t:sock_file write;
allow init_t razor_port_t:tcp_socket name_connect;
allow init_t self:process execmem;

# 中間ファイル生成

[root@mail ~]#
checkmodule -m -M -o amavisd.mod amavisd.te

checkmodule: loading policy configuration from amavisd.te
checkmodule: policy configuration loaded
checkmodule: writing binary representation (version 17) to amavisd.te
# 中間ファイルからモジュール生成

[root@mail ~]#
semodule_package --outfile amavisd.pp --module amavisd.mod

# モジュールインストール

[root@mail ~]#
semodule -i amavisd.pp

[4] Amavisd を設定して起動します。
[root@mail ~]#
vi /etc/amavisd/amavisd.conf
# 20行目:自ドメイン名に変更

$mydomain = '
srv.world
';
# 152行目:自ホスト名に変更

$myhostname = '
mail.srv.world
';
# 154行目:コメント解除

$notify_method = 'smtp:[127.0.0.1]:10025';
$forward_method = 'smtp:[127.0.0.1]:10025';
[root@mail ~]#
systemctl start amavisd spamassassin

[root@mail ~]#
systemctl enable amavisd spamassassin

[5] Postfix の設定です。
[root@mail ~]#
vi /etc/postfix/main.cf
# 最終行に追記

content_filter=smtp-amavis:[127.0.0.1]:10024
[root@mail ~]#
vi /etc/postfix/master.cf
# 最終行に追記

smtp-amavis unix -    -    n    -    2 smtp
    -o smtp_data_done_timeout=1200
    -o smtp_send_xforward_command=yes
    -o disable_dns_lookups=yes
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

[root@mail ~]#
systemctl restart postfix

[6] 以上で設定完了です。
送受信メールには以下のようなヘッダが付加されます。もしウィルスが検知された場合は削除され、クライアントには配送されません。
関連コンテンツ