怎么进行配置Sendmail服务器以防治垃圾邮件
Sendmail是一种常用的邮件传输代理程序,可以帮助用户从一个电子邮件系统向另一个电子邮件系统发送电子邮件。然而,随着网络安全问题愈发突出,垃圾邮件(spam)问题也不容忽视。为了有效防治垃圾邮件,用户需对Sendmail进行配置。以下是如何进行配置Sendmail服务器以防治垃圾邮件的方法。
一、增加黑名单和白名单
为了防止垃圾邮件的频繁发送,Sendmail 需要识别垃圾邮件。这时候,使用黑名单(Blacklist)和白名单(Whitelist)即可。黑名单通常用来拒绝来自不良指标(如非法商业广告或违法信息)的电子邮件,白名单通常用来接受来自合法来源的电子邮件(如可以信任董事会或公司员工的电子邮件)。建议将白名单的电子邮件地址都按顺序排列在一个文件里,而该文件的文件名将传递给Sendmail。
二、开启TCP Wrappers
TCP Wrappers技术常用于排查恶意软件攻击,这项技术还可让您在多个网络服务之间建立安全通道。语法如下:
vi/etc/hosts.allow或/etc/hosts.deny
端口:增加拒绝访问的ip号;正常端口放通即可。例如,
ssh:ALLOW:10.1.1. (表示10.1.1.0/24中的所有电脑都有访问权限)
三、修改 DNSBL 配置
一个基于 DNS 基础的黑名单(DNSBL)是一种用于标记垃圾邮件问题的标记系统。当邮件到达您的服务器时,该邮件的来源 IP 地址将被发送到一个在线 DNSBL 服务器中,如果该 IP 地址存在于数据中,则认为该邮件可能是垃圾邮件。发送到带有垃圾邮件发送者的DNSBL服务器的邮件将标记为“垃圾邮件”。要配置DNSBL,需要编辑Sendmail配置文件,将以下代码添加到/etc/mail/sendmail.mc文件中:
dnl# DNS方式的垃圾邮件过滤# define(confMILTER_READ_ENVFROM’)
dnl# 配置地址检查功能,只接受网络ip号为 127.0.0.1时的发送请求
dnl #MA4:接受由127.0.0.1参与的发信请求
define(MILTER_MACROS_ENVFROM,{client_addr}’)
四、添加 milter 协议支持
Sendmail 配置时还需要添加 milter 协议支持,milter协议是一种透明的邮件过滤协议,允许用户使用自己的代码对发往或从本服务器接收的邮件进行更多的过滤和控制。另外,用户需要确保其服务器上已经安装了 Milter 协议支持程序。以下代码将milter协议支持加入Sendmail 中:
dnl # 加入milter 程序函数
INPUT_MAIL_FILTER(content_filter’,S=unix:/var/run/filter.sock,F=,T=C:5m;')
dnl # 设定过滤这个milter将处理的发件信头和收件信头
define(confMILTER_MACROS_CONNECT’,$\{client_resolve} $\\\{client_ip} $\\\{client_name} ‘)
define(confMILTER_MACROS_HELO’,$\\\{client_resolve} $\\\{client_ip} $\\\{client_name} $\\\{server_name}’)
define(confMILTER_MACROS_ENVFROM’,${auth_authen}’)
define(confMILTER_MACROS_ENVTO’,$\\\{rcpt_mailer} $\\\{rcpt_host} $\\\{rcpt_addr}’)
五、开启 SpamAssassin
SpamAssassin 是一种基于 Bayesian algorithm 的反垃圾邮件系统,常用于防范黑客和骇客等网络攻击。开启SpamAssassin有助于防范垃圾邮件,可以通过以下命令行代码安装可以在系统补丁中包含的 SpamAssassin 规则集:
Download Spasmassassin and unpack it to a directory, such as /usr/local/spamassassin
cd /usr/local/spamassassin
./sa-update --no-gpg
Start spamassassin daemon
/usr/bin/spamd -d -c -P /var/run/spamd.pid
六、使用时间限制
使用时间限制可以控制系统在什么时候接收邮件,限制电子邮件的发送和接收。这对于节省服务器带宽和缓解峰值网络流量很有用。在/etc/mail/sendmail.cf文件中添加以下代码:
O DaemonPortOptions=Name=MTA:5m;Addr=localhost:5m;Journal=j;RemoteIP=no
O CertSubject=/O=MyCompany.com/OU=www.mycompany.com/CN=localhost
限制输入和输出
让Sendmail只接受来自特定主机的输入用户可以使用以下 sed 命令添加,已经定义了在输入期间为可以通过。
进入文件/etc/mail/sendmail.cf文件,先查询有没有出现以下代码:
O DaemonPortOptions=Name=MTA;Addr=127.0.0.1;Socket=mta
/dnl-DAEMON_OPTIONS(‘Port=submission, Name=MSA, M=Ea, Addr=127.0.0.1′)/dnl
修改为:
O DaemonPortOptions=Name=MTA;Addr=127.0.0.1;Socket=mta
DAEMON_OPTIONS(`Family=inet, Name=mta.localnet, Port=smtp, Addr=207.249.100.46′)
OInputMilters=content-filter,lcl.test.com:unix:/var/spool/milter-greylist/milter-greylist.sock
OOutputMilters=lcl.test.com:unix:/var/spool/milter-greylist/milter-greylist.sock
以上是配置 Sendmail服务器以防治垃圾邮件的方法,尽管这些方法不能完全防止垃圾邮件的出现,但它们可以大大减少网络中的垃圾邮件数量,让邮件系统更加安全和可靠。
