Ubuntu邮件服务器反病毒设置指南(以Postfix+Amavisd-new+ClamAV为例)
确保系统已更新并安装必要工具:
sudo apt update && sudo apt upgrade -y
sudo apt install amavisd-new spamassassin clamav clamav-daemon zoo unzip unrar bzip2 libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop pax rar lha arc
这些工具分别用于邮件过滤(Amavisd-new)、反垃圾(SpamAssassin)、反病毒(ClamAV及依赖)。
ClamAV需定期更新病毒特征库以识别最新威胁:
# 启动freshclam服务(用于更新病毒库)
sudo systemctl enable clamav-freshclam
sudo systemctl start clamav-freshclam
# 手动更新(可选,验证配置是否正确)
sudo freshclam
若更新失败,需检查/etc/clamav/freshclam.conf中的DatabaseMirror设置(默认指向ClamAV官方镜像),确保网络可访问。
Amavisd-new是邮件过滤框架,负责调用ClamAV扫描附件:
# 编辑Amavisd-new主配置文件
sudo nano /etc/amavis/conf.d/15-content_filter_mode
取消以下两行的注释(启用病毒检查):
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re
);
保存后,继续修改ClamAV相关配置:
sudo nano /etc/amavis/conf.d/50-user
添加以下内容(确保ClamAV被调用):
$clam_av_config = '/etc/clamav/clamd.conf';
$clamd_socket = 'unix:/var/run/clamav/clamd.ctl'; # ClamAV守护进程通信方式
$virus_admin = 'admin@example.com'; # 病毒邮件通知管理员
重启Amavisd-new服务:
sudo systemctl restart amavis
Postfix需将邮件转发给Amavisd-new扫描,再返回处理结果:
# 编辑Postfix主配置文件
sudo nano /etc/postfix/main.cf
添加以下内容(定义内容过滤规则):
content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings
接着编辑Postfix master进程配置:
sudo nano /etc/postfix/master.cf
在文件末尾添加以下内容(定义Amavisd-new的SMTP服务):
amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes
127.0.0.1:10025 inet 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 -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_bind_address=127.0.0.1
重启Postfix服务:
sudo systemctl restart postfix
发送一封包含病毒的测试邮件(如通过EICAR测试文件),验证是否被拦截:
# 获取EICAR测试文件(无害的病毒模拟文件)
wget https://secure.eicar.org/eicar.com.txt
将eicar.com.txt作为附件发送给自己的邮件地址,检查邮件是否被拦截,或查看日志确认:
# 查看Amavisd-new日志
sudo tail -f /var/log/amavis/amavis.log
# 查看Postfix日志
sudo tail -f /var/log/mail.log
若配置正确,日志中会出现类似“病毒被拦截”的记录。
sudo freshclam(可设置cron定时任务,如每天凌晨更新)。/etc/amavis/conf.d/15-content_filter_mode,例如调整final_virus_destiny(病毒邮件的处理方式,默认为D_DISCARD丢弃,可改为D_BOUNCE退回)。/var/log/amavis/amavis.log和/var/log/mail.log,排查误判或漏判问题。通过以上步骤,Ubuntu邮件服务器可实现基础的病毒扫描功能,有效拦截通过邮件传播的恶意软件。如需更高级的反垃圾功能,可结合SpamAssassin(已在步骤1中安装)进行配置。