设为首页 收藏本站
查看: 696|回复: 0

[经验分享] Ubuntu下为邮件服务器配置反垃圾和反病毒

[复制链接]

尚未签到

发表于 2018-5-5 09:29:27 | 显示全部楼层 |阅读模式
  系统:ubuntu-10.04.3-server-amd64
  服务器配置完整的FQDN名
  下面我们来学习,反垃圾邮件,和反病毒。
  你可以在postfix 下的main.cf配置文件中过滤垃圾邮件。
  具体要怎样做,请参考中国反垃圾邮件联盟中的配置
  http://anti-spam.org.cn/
  接下来是我的配置
  配置 Amavisd-new, SpamAssassin 和 ClamAV
  apt-get 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  lzop
  修改/etc/amavis/conf.d/15-content_filter_mode
  里面的内容为这样
use strict;  
# You can modify this file to re-enable SPAM checking through spamassassin
  
# and to re-enable antivirus checking.
  
#
  
# Default antivirus checking mode
  
# Uncomment the two lines below to enable it back
  
#
  
@bypass_virus_checks_maps = (
  
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
  
#
  
# Default SPAM checking mode
  
# Uncomment the two lines below to enable it back
  
#
  
@bypass_spam_checks_maps = (
  
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
  
1; # ensure a defined return
  修改
  /etc/amavis/conf.d/21-Ubuntu_defaults
  /etc/amavis/conf.d/20-debian_defaults
  主要注意以下内容:
# @bypass_virus_checks_acl = qw( . ); # uncomment to DISABLE anti-virus code  
# @bypass_spam_checks_acl = qw( . ); # uncomment to DISABLE anti-spam code
  
$final_virus_destiny = D_DISCARD; # (defaults to D_BOUNCE)
  
$final_banned_destiny = D_REJECT; # (defaults to D_BOUNCE)
  
$final_spam_destiny = D_PASS; # (defaults to D_REJECT)
  
$final_bad_header_destiny = D_PASS; # (defaults to D_PASS), D_BOUNCE suggested
  这是对邮件的处理方式。
  修改/etc/amavis/conf.d/50-user
  里面的内容因该为这样
use strict;  
#
  
# Place your configuration directives here. They will override those in
  
# earlier files.
  
#
  
# See /usr/share/doc/amavisd-new/ for documentation and examples of
  
# the directives you can use in this file
  
#
  
$pax='pax';
  
#------------ Do not modify anything below this line -------------
  
1; # ensure a defined return
  然后,添加 clamav 用户到 amavis 用户组,并重启这两个服务
  sudo freshclam  //先更新病毒库
  adduser clamav amavis
  sudo /etc/init.d/amavis restart
  sudo /etc/init.d/clamav-daemon restart
  sudo /etc/init.d/clamav-freshclam restart
  然后,修改 /etc/postfix/main.cf,增加:
#### amavis config #####  
content_filter = amavis:[127.0.0.1]:10024
  
receive_override_options = no_address_mappings
  修改 /etc/postfix/master.cf,增加:
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>  
-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
  注意,这些 “-o”前面都有空格,你们记住是空两格就行了
  重启 Postfix:
  1. /etc/init.d/postfix restart
  2. postfix check
  root@mail:~# netstat -tap
  激活Internet连接 (服务器和已建立连接的)
  Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  tcp 0 0 mail.extmail.org:10024 *:* LISTEN 20822/amavisd (mast
  tcp 0 0 mail.extmail.org:10025 *:* LISTEN 22856/master
  tcp 0 0 mail.extmail.org:mysql *:* LISTEN 2277/mysqld
  tcp 0 0 *:www *:* LISTEN 15824/apache2
  tcp 0 0 *:ssh *:* LISTEN 2176/sshd
  tcp 0 0 mail.extmail.org:ipp *:* LISTEN 2938/cupsd
  tcp 0 0 mail.extmail.org:8888 *:* LISTEN 6947/dispatch.fcgi
  tcp 0 0 *:smtp *:* LISTEN 22856/master
  tcp6 0 0 [::]:imaps [::]:* LISTEN 10281/couriertcpd
  tcp6 0 0 [::]:pop3s [::]:* LISTEN 10357/couriertcpd
  tcp6 0 0 [::]:netbios-ssn [::]:* LISTEN 2611/smbd
  tcp6 0 0 [::]:pop3 [::]:* LISTEN 10316/couriertcpd
  tcp6 0 0 [::]:imap2 [::]:* LISTEN 10240/couriertcpd
  tcp6 0 0 [::]:ssh [::]:* LISTEN 2176/sshd
  tcp6 0 0 localhost:ipp [::]:* LISTEN 2938/cupsd
  tcp6 0 0 [::]:microsoft-ds [::]:* LISTEN 2611/smbd
  root@mail:~#
  出现上面 “10024”,“10025”,字样说明amavis安装成功接下来我们来做反垃圾。
  ===========================================================================
  安装 Razor,Pyzor 和 DCC 并配置 SpamAssassin
  Razor,Pyzor 和 DCC 是网络协作式垃圾邮件过滤器,它们可以由 SpamAssassin 来调用。先安装它们
  apt-get install l razor  pyzor
  因为DCC不在我们软件库中我们要执行下面的操作
  cd /tmp
  wget http://launchpadlibrarian.net/11564361/ ... 5_i386.deb
  wget http://launchpadlibrarian.net/11564359/ ... 5_i386.deb
  dpkg -i dcc-common_1.3.42-5_i386.deb
  dpkg -i dcc-server_1.3.42-5_i386.deb
  (http://launchpadlibrarian.net/中找安装包)
  然后修改 SpamAssassin 配置文件 /etc/spamassassin/local.cf,以调用它们:
  gedit /etc/spamassassin/local.cf
  把下列的代码写在最后面
#dcc  
use_dcc 1
  
dcc_path /usr/bin/dccproc
  
#pyzor
  
use_pyzor 1
  
pyzor_path /usr/bin/pyzor
  
#razor
  
use_razor2 1
  
razor_config /etc/razor/razor-agent.conf
  
#bayes
  
use_bayes 1
  
use_bayes_rules 1
  
bayes_auto_learn 1
  
#whitelist
  
whitelist_from *@*.edu.cn *@ujn.cn *@ujn.org.cn
  
# ---------------------------------------------------------------------------
  
# URL: http://www.anti-spam.org.cn/
  
#### 最佳推荐之使用CBL- #####
  
header RCVD_IN_CBLLESS eval:check_rbl('cblless', 'cblless.anti-spam.org.cn.', '127.0.8.5')

  
describe RCVD_IN_CBLLESS Received via a>  
tflags RCVD_IN_CBLLESS net
  
score RCVD_IN_CBLLESS 3.5
  
#### 最佳推荐之使用CML #####
  
header RCVD_IN_CML eval:check_rbl('cml', 'cml.anti-spam.org.cn.', '127.0.8.1')

  
describe RCVD_IN_CML Received via a white list>  
tflags RCVD_IN_CML net nice
  
score RCVD_IN_CML -20.0
  上面白名单部分,你可以将你的本地虚拟域或者你认为安全的域列出来,这样可以避免域内邮件被过滤。下面的 rbl 来自 http://www.anti-spam.org.cn/。这样配置可以防止在 Postfix 直接配置的情况下,把来自这些地址的非垃圾邮件直接拒绝。
  我们再来编辑/etc/spamassassin/v310.pre
  我们把 #loadplugin Mail::SpamAssassin:lugin:CC
  前的“#”给去掉
  然后重置spamassassin 请执行
  spamassassin --lint
  然后重新启动 Amavisd-new:
  /etc/init.d/amavis restart
  注意这里不是启动 spamassassin,因为 spamassassin 以及配置为由 Amavisd-new 来调用了。
  再更新我们的SpamAssassin
  sa-update --no-gpg
  为了让它以后能够自动更新,我们要做这样两步
  执行下面的建一个脚本
  crontab -e
  把下面的代码复制
  10 4 * * * /usr/bin/sa-update --no-gpg &> /dev/null
  按ctrl+o 来保存,按ctrl+x来退出
  这样每天早上 4 点 10 分,就会自动下载更新。
  spamassassin 默认有很多规则,在/usr/share/spamassassin里面。
  安装 Spam Locker 反垃圾邮件
  在 Ubuntu 上安装 Spam Locker 比较简单了,大部分 perl 包在上面已经安装了。
  我们从www.extmail.org下载最新的 slockd-0.99.tar.gz 我们将它解压,并放到/usr/local下面
  tar zxvf slockd-0.99.tar.gz
  mv slockd /usr/local/slockd
  然后编辑 /usr/local/slockd/config/main.cf,将
  setsid 1
  log_file /var/log/slockd.log
  两行前面的注释去掉。
  将 /usr/local/slockd/slockd-init 复制到 /etc/init.d 目录下,然后建立启动关闭服务的链接文件:
  cp /usr/local/slockd/slockd-init /etc/init.d/slockd
  update-rc.d slockd start 19 2 3 4 5 . stop 21 0 1 6 .
  创建 /etc/logrotate.d/slockd
  /var/log/slockd.log {
  daily
  notifempty
  missingok
  rotate 5
  compress
  create 644 root root
  sharedscripts
  }
  然后,编辑 /usr/local/slockd/config/whitelist,加入你的白名单列表。之后启动 slockd 服务。
  /etc/init.d/slockd start
  编辑 /etc/postfix/main.cf,将
  smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated, reject_unknown_sender_domain,reject_non_fqdn_hostname, reject_non_fqdn_sender,reject_non_fqdn_recipient, reject_unknown_recipient_domain,reject_unauth_destination, reject_unauth_pipelining,reject_invalid_hostname, check_recipient_maps
  中的
  check_recipient_maps
  替换为
check_policy_service inet:127.0.0.1:10030  即可。然后重新启动 Postfix。

  /etc/init.d/postfix>  启动/测试 slockd
  在/usr/local/slockd目录下,执行
  ./slockd
  此时slockd将启动,并进入监听模式,接受来自10030端口的请求,要注意的是,如果刚才配置了log_file路径,则调试信息必须通过如下命令获得:
  tail -f /var/log/slockd.log
  打开另一个ssh/终端窗口,进入/usr/local/slockd/tools 目录,输入:
  perl policy_sig -h localhost -p 10030 --helo FOOBAR \
  --ip 192.168.0.1 --from test@foo.com --to test@bar.com
  此时,程序应该返回如下错误信息:
  action=504 <FOOBAR>: rejected, see http://bl.extmail.org/cgi/why?fqdn
  这表示slockd初步的正常工作了。
  ps 先看一下 spam lock 的进程还有没有
  ps aux |grep slockd
  会有如下显示
  root 20821 1.9 5.1 48736 19708 ? S 13:19 0:08 gedit /usr/local/slockd/config/whitelist
  root 21005 0.0 1.1 7592 4344 ? SNs 13:20 0:00 slockd (master)
  root 21007 0.0 1.8 11636 7084 ? SN 13:20 0:00 slockd (idle)
  root 21014 0.0 1.8 11612 7068 ? SN 13:20 0:00 slockd (idle)
  root 21047 0.0 0.2 3560 820 pts/1 S+ 13:26 0:00 grep slockd
  又出现问题发现spamassassin 重启不了
  SpamAssassin Mail Filter Daemon: disabled, see /etc/default/spamassassin
  如上错误,
  我们定位到 /etc/default/spamassassin 打开它
  # Change to one to enable spamd
  ENABLED=0
  改为1 重启-
  本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2009-11/22514p11.htm
  pamAssassin的工作原理
  SpamAssassin可以通过许多方法来检验一封电子邮件到底是不是垃圾邮件:
  1、检查电子邮件的首部信息是否符合各种Internet标准(例如:数据的格式是否正确?)
  2、检查电子邮件的首部和内容部分的信息是否包含一些垃圾邮件中常见的、用各种语言写成的短语或是句子(例如:“快速致富”或是退定该邮件的一些方法描述)。
  3、将首部和内容部分的“校验和”与多个垃圾邮件信息在线数据库中的“校验和”作比较来确认垃圾邮件。
  4、检查邮件发送者的IP地址是否在一些在线的站点列表中(这是一些已经被垃圾邮件发送者利用,或是怀疑被垃圾邮件发送者利用的站点)。
  5、自定义地址、主机名和域名的白名单(白名单中的邮件不会作为垃圾邮件)和黑名单(上了黑名单的邮件会被当作垃圾邮件)。SpamAssassin可以根据用户邮件的历史记录自动构建白名单。
  6、使用人为指定的一些垃圾邮件(通常成为spam)和非垃圾邮件(通常成为ham)的例子来训练SpamAssassin识别用户收到的各种不同的垃圾邮件。
  7、使用SPF协议(Sender Policy Framework)比较邮件发送系统的IP地址和邮件发送人的域名,来确定该邮件发送系统是否允许该域名下的用户发送邮件。这是SpamAssassin 3.0中增加的新特性。
  8、SpamAssassin会优先排除那些愿意使用Hashcash形式的邮件发送者(使用Hashcash形式会作一些附加计算,消耗一些时间)。因为垃圾邮件发送者如果支持这些附加计算,就不能迅速发送大量垃圾邮件了。这是SpamAssassin 3.0中增加的新特性。
  9、SpamAssassin将信息格式验证、内容过滤和参考网络黑名单这三种方式相结合。基于过滤的系统要求用户参与,而且会引起邮件收发时的系统延迟。还有其他一些反垃圾邮件的方法,这些方法都各有利弊,,其中一些可以还可以用来替代SpamAssassin。
  10、在一个挑战/应答系统中,系统会暂存一个陌生发送者发送的所有信息,并返回一个特定代码或是一组指令作为一个挑战。陌生发送者必须以某种方式作出应答,以验证其邮件地址,并证实(通常使用交谈的方式)发送者是一个人而不是一个自动垃圾邮件发送程序。如果发送者应答成功,系统就会真正接受该信息。
  11、在灰名单系统中,当邮件服务器遇到陌生的邮件发送人或是陌生的邮件发送系统时,它先返回一个临时的SMTP失败代码。如果上述的邮件发送系统在经过一个合理的时间间隔后,试图重新发送邮件,邮件服务器会正常接收该邮件,及随后来自于该邮件发送系统的其他邮件(译注:邮件服务器认为这不是一个发送垃圾邮件的邮件发送系统,因此同意接收邮件)。因为当垃圾邮件发送者遇到上面的临时SMTP错误时,通常会把它当作永久性错误,或是试图在灰名单规定的时间间隔内连续多次发送该邮件,于是邮件服务器就会拒绝接收来自这个邮件发送系统的邮件(译注:邮件服务器认为这就是一个发送垃圾邮件的邮件发送系统,因此拒绝接收邮件)。
  12、在限时地址系统中,一个电子邮件地址可以衍生出多个唯一性变体地址,用户可以在不同的web表格、电子邮件或是新闻组等需要电子邮件地址的地方分别填写不同的变体地址。可以限定这些变体地址的有效时间,也可以通过“激活”方式来激活某个原来无效变体地址。在这些系统中,如果用户的某一个变体地址收到了垃圾邮件,那么他(或她)就能轻易的找到发送垃圾邮件的公司(或是那些把你的邮件地址买给垃圾邮件发送者的公司),用户只需要取消这个变体地址就可以阻止垃圾邮件了。
  13、在小额付费系统中,邮件发送者每次发送邮件都必须付费(金额很小),这样一来发送大量的垃圾邮件就会导致高额的开销。在一些类似的系统中,如果收件人确认其收到的不是垃圾邮件,则小额付费会返还给邮件发送者。(SpamAssassin 3.0中通过Hashcash的方式来支持小额付费的一个变体,在这个变体中小额付费演变为Hashcash中处理时间的消耗而不是真的付钱。)
  slockd 垃圾邮件拦截
  网上记录,不记得来源,目前在EMOS1.5中正常使用
  对于slockd,主要编辑黑白名单,及RBL
  如果修改后不起作用,可以重启slockd,重启方式:
  /usr/local/slockd/slockd-init stop
  /usr/local/slockd/slockd-init start
  一、黑白名单
  blacklist  黑名单,这项里只能写域名
  whitelist    白名单,这项里只能写域名
  sender_blackist 黑名单,这项里即可写域名也可以对某域里某一用户。
  sender_whitelist 白名单,同上。
  recip_whitelist
  recip blacklist
  黑白名单配置文件路径 /usr/local/slockd/config/
  黑白名单的编辑方法可以用正值表达式。编辑时格式:/正值表达式/
  如里直接写就是普通表达式
  二、RBL
  vi /usr/local/slockd/config/plugin.cf
  少数RBL可能拦截过于敏感,建议只使用以下的RBL
  zen.spamhaus.org
  bl.spamcop.net
  三、关于启动slockd的命令,EMOS1.4集成的slockd可以不重启,修改即时生效。
  /usr/local/slockd/slockd-init start
  白名单是先于黑名单起作用的,所以测试时一定要细心。还有上面提到的黑白名单不同的效果,大家千万不要在blacklist文件里去编辑形如emos@extmail.org的表达式,它只支持域的形式extmail.org,若是要编辑emos@extmail.org那只能在sender_blacklist文件里去设置,还有所有的正值表达式都是用/表达式/的形式,不用/把内容括起来就被认为普通表达式。
  控制发送和接受附件的类型---支持发送exe文件:
  Vim  /etc/amavis/conf.d/ 20-debian_defaults
  1、
  qr'^\.(exe-ms)$', //阻挡zip,rar中的exe文件//加#,
  2、
[ qr'^\.(exe|zip|rar|arc|arj|zoo)$'=> 0 ], # 在这里加支持的文件类型,并去掉原来的#号allow any within such archives

  3、
  删除掉两处配置中的exe
  qr'\.[^./]*\.(exe|vbs|pif|scr|bat|cmd|com|cpl|dll)\.?$'i,
  =====================================
  gitec@mail:/etc/apache2$ sudo  /etc/init.d/clamav-daemon start
  * Clamav signatures not found in /var/lib/clamav
  * Please retrieve them using freshclam
  * Then run '/etc/init.d/clamav-daemon start'
  出现这种错误应先更新病毒库。
  sudo freshclam
  sudo  /etc/init.d/clamav-daemon start

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-456035-1-1.html 上篇帖子: Ubuntu 12.04LTS 安装 libssl 下篇帖子: Ubuntu的超级管理员密码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表