在这个Postfix系列的前两篇文章中,你学会了如何建立并通过phpMyAdmin的管理电子邮件服务器的数据库,以及如何Postfix和Dovecot的配置,以处理传入和传出的邮件。 此外,我们解释了如何为我们之前创建的虚拟帐户设置邮件客户端,例如Thunderbird。
- 使用MariaDB设置Postfix邮件服务器和Dovecot - 第1部分
- 如何使用虚拟域用户配置Postfix和Dovecot - 第2部分
- 在Postfix中为虚拟用户安装和配置RoundCube Webmail客户端 - 第4部分
- 使用Sagator,一个防病毒/反垃圾邮件网关来保护您的邮件服务器 - 第5部分
由于没有采取防范病毒和垃圾邮件的预防措施,没有电子邮件服务器设置可以完成,我们将在本文中涵盖该主题。
集成ClamAV和SpamAssassin保护Postfix
请记住,即使* nix的类操作系统通常被认为是无病毒 ,很可能是用其他操作系统也将连接到电子邮件服务器的客户端。
因此,您需要向他们提供您已经采取必要措施以尽可能保护他们免受此类威胁的信心。
为Postfix配置SpamAssassin
在接收电子邮件的过程中,spamassassin将站在外部世界和服务器本身运行的电子邮件服务之间。 如果根据其定义规则和配置发现传入消息是垃圾邮件,则它将重写主题行以清楚地标识它。 让我们看看如何。
主要的配置文件是/etc/mail/spamassassin/local.cf
,我们应该确保以下选项(添加他们,如果他们不存在,或者取消注释如果需要的话):
report_safe 0 required_score 8.0 rewrite_header Subject [SPAM]
- 当report_safe设为0(建议值),收到的垃圾邮件只能通过修改邮件标题为每rewrite_header修改。 如果它被设置为1,该消息将被删除。
- 设置垃圾邮件过滤器的攻击性,required_score必须跟一个整数或十进制数。 数字越小,过滤器变得越敏感。 设置required_score某处8.0和10.0之间的值建议为许多(〜100秒)的电子邮件帐户的大型系统。
保存这些更改后,请启用并启动垃圾邮件过滤器服务,然后更新垃圾邮件规则:
# systemctl enable spamassassin # systemctl start spamassassin # sa-update
对于更多的配置选项,您可能希望通过运行来引用文档perldoc Mail::SpamAssassin::Conf
在命令行。
集成Postfix和SpamAssassin
为了有效地集成Postfix和spamassassin,我们需要创建一个专用的用户和组来运行垃圾邮件过滤器守护进程:
# useradd spamd -s /bin/false -d /var/log/spamassassin
接下来,在底部添加以下行/etc/postfix/master.cf
:
spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
并指示(在顶部)知道SpamAssassin将作为content_filter:
-o content_filter=spamassassin
将Postfix与SpamAssassin集成
最后,重新启动Postfix以应用更改:
# systemctl restart postfix
要验证的SpamAssassin工作正常,检测收到的垃圾,被称为GTUBE测试( 不请自来的群发电子邮件一般测试 )提供。
要执行此测试,请从网络外部的域(例如Yahoo !, Hotmail或Gmail)发送电子邮件到驻留在电子邮件服务器中的帐户。 将主题行设置为所需的任何内容,并在邮件正文中包含以下文本:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
例如,在我的Gmail帐户的邮件正文中发送上述文本会产生以下结果:
验证SpamAssassin检测垃圾邮件
并在日志中显示相应的通知:
# journalctl | grep spam
监视SpamAssassin邮件日志
正如你可以在上面的图片中看到,此电子邮件有垃圾邮件分数的1002.3。 此外,您可以测试通过命令行的SpamAssassin权:
# spamassassin -D < /usr/share/doc/spamassassin-3.4.0/sample-spam.txt
上面的命令将产生一些非常详细的输出,应包括以下内容:
从命令行测试SpamAssassin垃圾邮件
如果这些测试都没有成功,你可能要参考的SpamAssassin集成指南。
启动ClamAV和更新病毒定义
首先,我们需要编辑/etc/clamd.d/scan.conf
。 取消注释以下行:
LocalSocket /var/run/clamd.scan/clamd.sock
并注释掉或删除行:
Example
然后启用并启动clamav扫描程序守护程序:
# systemctl enable clamd@scan.service # systemctl start clamd@scan.service
不要忘记给antivirus_can_scan_system SELinux开关设置为1:
# setsebool -P antivirus_can_scan_system 1
在这一点上,值得和很好地检查服务的状态:
启动和更新ClamAV病毒定义
正如你可以在上面的图片中看到,我们的病毒签名超过7天以上。 更新它们,我们将使用已安装的ClamAV的更新包的一部分的工具名为freshclam的 。
更新病毒定义最简便的方法是通过一个cron作业的执行经常根据需要(一旦例如一天,如下面的例子说明被认为是足够的上午01点服务器时间):
00 01 * * * root /usr/share/clamav/freshclam-sleep
您也可以手动更新病毒定义,但在此之前还必须删除或注释掉以下行/etc/freshclam.conf
。
Example
现在你应该能够运行:
# freshclam
它将根据需要更新病毒定义:
FreshClam更新ClamAV病毒数据库
在电子邮件中测试ClamAV病毒
要验证ClamAV的正常工作,让我们下载一个测试病毒(我们可以从http://www.eicar.org/download/eicar.com获得),以youcl@linuxnewz.com的Maildir的(它位于/家庭/vmail/linuxnewz.com/youcl/Maildir)来模拟收到一个邮件附件的感染文件:
# cd /home/vmail/linuxnewz.com/youcl/Maildir # wget http://www.eicar.org/download/eicar.com
然后扫描/home/vmail/linuxnewz.com目录递归:
# clamscan --infected --remove --recursive /home/vmail/linuxnewz.com
ClamAV扫描电子邮件病毒
现在,随意设置该扫描通过一个cronjob运行。 创建一个名为文件/etc/cron.daily/dailyclamscan
,插入以下行:
#!/bin/bash SCAN_DIR="/home/vmail/linuxnewz.com" LOG_FILE="/var/log/clamav/dailyclamscan.log" touch $LOG_FILE /usr/bin/clamscan --infected --remove --recursive $SCAN_DIR >> $LOG_FILE
并授予执行权限:
# chmod +x /etc/cron.daily/dailyclamscan
以上的cronjob将递归扫描邮件服务器的目录,并留在日志的操作/var/log/clamav/dailyclamscan.log
(确保在/ var /日志/ clamav的目录存在)。
让我们来看看当我们从youcl@linuxnewz.com传送eicar.com给linuxsay@linuxnewz.com会发生什么:
在电子邮件中测试和查找病毒
概要
如果您按照本教程和本系列的前两篇文章中所述的步骤操作,则现在有一个具有垃圾邮件和防病毒保护功能的Postfix电子邮件服务器。
免责声明 :请注意,服务器的安全是一个庞大的问题,不能充分涵盖在很短的一系列这样。
因此,我强烈建议您熟悉本系列中使用的工具及其手册页。 虽然我已尽最大努力覆盖与此主题相关的基本概念,但不要假设在完成本系列之后,您完全有资格在生产环境中设置和维护电子邮件服务器。
本系列文章旨在作为一个起点,而不是Linux中邮件服务器管理的详尽指南。
你可能会想到其他的想法,可以丰富这个系列。 如果是这样,请随时使用下面的评论表单给我们留言。 问题和其他建议也很感激 - 我们期待您的回音!