文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Linux下安全高效Web邮件服务器

Linux下安全高效Web邮件服务器

时间:2006-08-31  来源:linuxloveu

From] 作者:华江 文章来源:it168.com http://www.chinaemail.com.cn/

利用浏览器通过web方式来收发电子邮件的服务或技术(WebMail),不需借助邮件客户端,可以说只要能上网就能使用极大地方便了用户对邮件的收发。对于不能熟练使用邮件客户端,或者在网吧不便使用邮件客户端的用户来说,WebMail更是必不可少的选择。另外, 设定 pop3 server, smtp server 等对于某些使用者来说也有点困难。这时候 WebMail 就显出它的好处了。

  ebMail 就是使用者透过浏览器连到web服务器, 而由 web server 上的程序负责作收信/送信的动作. 使用者直接透过 browser 作读信/写信等操作, 信件其实并不存在使用者的计算机上. 因此无论使用者用的是哪一部计算机, 只要可以连上网络, 都可以使用读到之前与新收到的信件。 另外一个好处是 WebMail 不容易因为读取含有病毒的档案而导致中毒, 更不会发生个人邮件系统中毒后, 寄送大量病毒信件给其它亲朋好友的这种惨剧。

一、 软件概述与下载:

  Email能够成为当今Internet上应用最广泛的网络服务,WebMail可谓功不可没。在Linux下系统中MTA服务的软件有许多,常用Sendmail、Qmail、Postfix等软件,本文使用RHEL 4.0 + Postfix + dovecot + Apache + OpenWebMail制作一个集POP和WebMail等功能的电子邮件系统。下面讲述如何把Linux机器配置成一个基于Web的电子邮件系统。这个电子邮件系统可以用于一个小团体或者组织之中。当然如果你家里有一个互联网连接(比如ADSL),那么它也可以用安全的方式远程检测你的电子邮件。

  Postfix是一个非常优秀的MTA,她素以高效、安全的特点而著称。Postfix是作者在UNIX上所见过的MTA中在反垃圾邮件(Anti-Spam或Anti-UCE)方面做得最好的一个,甚至有很多公司在Postfix代码的基础上进行二次开发而推出反垃圾邮件网关产品。 MTA的反垃圾邮件功能,实际上就是在MTA处理过程中对会话进行过滤。这个过滤不但过滤了发往自身的垃圾邮件,而且还防止了自身被恶意利用发送垃圾邮件。Postfix实现了目前所有主要的MTA过滤技术。postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。和Sendmail相比Postfix更快、更容易管理、更灵活、更安全,同时还与sendmail保持足够的兼容性。Sendmail相比Postfix对比见表1。


500)this.width=500;" border=0>
表1 Sendmail与Postfix的对比


  Open Webmail 优点:良好的使用接口 、 多国语言 (目前共支持超过 30 种语言) 、多组图示,多组布景,可以依个人喜好自订背景、 在线更改密码 (必需记得原来的密码)、 与 Outlook 接近的多媒体信件显示能力 、多种字集内码自动转换、 支援 HTML 信件编写 、拼字检查 (英文字典字数可能不足)、 支持草稿暂存 、 可动态切换写信字集内码、 POP3 外部邮件 、 邮件规则 (可建立过滤规则 ) 、 信件“搬移/复制/删除/下载”功能、 信箱“ 建立/重整/更名/删除/下载”功能 、 通讯簿、 全文检索 、自动清除垃圾桶 N 天以上邮件。openwebmail缺点:由于openwebmail使用perl脚本语言编写的,执行速度可能不如php。OpenWebmail主页提供许多格式的软件,请根据Linux发行版本选择合适的软件包。本文使用rpm格式。本文设定一台Linux服务器配域名:cao.net,ip地址: 192.168.1. 253, 邮件主机:mail.cao.net。所有需要安装的软件:cyrus-sasl、dovecot、httpd 、perl-Text-Iconv、perl-suidperl、perl-Compress-Zlib、perl-CGI-SpeedyCGI 。其中Postfix、sendmail +cyrus-sasl+dovecot+httpd+perl在安装系统时一起安装。其他软件需要进行下载:
 
    #wget http://openwebmail.com/openwebmail/download/redhat/rpm/release/openwebmail-2.51-1.i386.rpm 
    #wget  http://distro.ibiblio.org/pub/linux/distributions/startcom/ML-4.0.4/updates/i386/perl-suidperl-5.8.5-12.1.1.i386.rpm 
    #wget  http://mirrors.ircam.fr/pub/dag/packages/perl-Text-Iconv/perl-Text-Iconv-1.4-1.2.el4.rf.i386.rpm 
    #wget  http://ftp.belnet.be/packages/dries.ulyssis.org/redhat/el4/en/i386/RPMS.dries/perl-CGI-SpeedyCGI-2.22-1.2.el4.rf.i386.rpm

二、 postfix的安装与启动过程:     (1)杀掉所有Sendmail进程
 
    #killall sendmail (停止所有的Sendmaail进程)
    sendmail: no process killed
    # rpm -ivh postfix-2.2.5-3.rhel4.i386.rpm
    (2)启动dovecot服务过程:     # service postfix start
    Starting postfix: [ 确定 ]
    # service dovecot start
    启动 Dovecot Imap: [ 确定 ]
    现在可以使用邮件服务器发送邮件了,但是还不能下载邮件,因为新版redhat Linux中 dovecot代替了imap软件包,但是还没有绑定POP3和POP协议,下面修改配置文件: /etc/dovecot.conf,
    #protocols = imap imap3 
    protocols = imap imap3 pop3 pop3s
    auth_passdb =
    更改为:
    auth_passdb = shadow
    然后重新启动dovecot服务:
    # service dovecot restart
    停止 Dovecot Imap: [ 确定 ]
    启动 Dovecot Imap: [ 确定 ]
    (3)修改postfix邮件服务器配置文件:

    #myhostname = host.domain.tld
    更改为:
    myhostname = mail.cao.net
    #mydomain = domain.tld
    更改为:
    mydomain = cao.net
    #myorigin = $mydomain
    更改为:
    Myorigin = cao.net
    #inet_interfaces = all
    更改为:
    Inet_interfaces =all
    #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, mail.$mydomain, www.$mydomain, ftp.$mydomain
    更改为:
    mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, mail.$mydomain, www.$mydomain,
    ftp.$mydomain
    #mynetworks = host
    更改为:
    mynetworks = host
    (4)端口测试:

    # telnet mail.cao.net 25 (测试25端口)
    Trying 127.0.0.1...
    Connected to localhost.localdomain (127.0.0.1).
    Escape character is '^]'.
    220 mail.cao.net ESMTP Postfix
    quit
    221 Bye
    Connection closed by foreign host.
    # telnet mail.cao.net 110 (测试110端口)
    Trying 127.0.0.1...
    Connected to localhost.localdomain (127.0.0.1).
    Escape character is '^]'.
    +OK dovecot ready.
    quit
    +OK Logging out
    Connection closed by foreign host.
(5)安装防范病毒软件

    F-Prot Antivirus软件包安装和配置过程:

    Wegt http://files.f-prot.com/files/linux-x86/fp-linux-ws.rpm

    安装F-Prot Antivirus软件包前,请先启动SpamAssassin服务器:
    Matt Sergeant、Craig Hughes和Justin Mason于发布的SpamAssassin(SA)。目前最新版本是3.0.2,它是较为流行的反垃圾邮件软件,据SpamAssassin供应商 Deersoft的统计,目前大约有3万台Unix服务器上使用了SpamAssassin。SpamAssassin利用Perl语言来对邮件内容进行规则匹配,从而达到判断过滤垃圾邮件的目的。它的判断方式是基于评分的方式,也就是说如果这封邮件符合某条规则,则给与一定分值;当累计的分值超过了一定限度时,则判定该邮件为垃圾邮件。对Sendmail、Qmail、Postfix和Exim等各种邮件平台都适用。SpamAssassin的安装过程比较简单。
    # service spamassassin start (启动SpamAssassin服务器)
    Starting spamd:                                                                   [  确定  ]
    # rpm -ivh fp-linux-ws.rpm (安装F-Prot Antivirus软件包)
    升级的F-Prot Antivirus病毒库的操作:
    # cd /usr/local/f-prot/tools/
    # ./check-updates.pl (升级命令)
    ***************************************
    * F-Prot Antivirus Updater            *
    ***************************************
    Nothing to be done...
    MailScanner软件包安装和配置过程:
    Wegt http://www.sng.ecs.soton.ac.uk/mailscanner/downloads.shtml
    # mv MailScanner-4.50.5-1.rpm.tar.gz /tmp/source/ (移动文件到/tmp/source/目录中)
    # cd /tmp/source/ (进入source目录中)
    # tar -zxvf MailScanner-4.50.5-1.rpm.tar.gz (MailScanner解压过程)
    # cd MailScanner-4.50.5-1 (进入MailScanner软件解压目录)
    # ./install.sh (执行MailScanner软件的安装命令)
    更改incoming、quarantine两个目录相关用户和组的使用权限:
    # chown postfix.postfix /var/spool/MailScanner/incoming
    # chown postfix.postfix /var/spool/MailScanner/quarantine
    修改/etc/MailScanner/目录下的MailScanner.conf文件,修改详细内容以下:
    详细内容:
    Run As User =
    Run As Group =
    更改为:
    Run As User = postfix
    Run As Group = postfix
    Incoming Queue Dir = /var/spool/mqueue.in
    Outgoing Queue Dir = /var/spool/mqueue
    更改为:
    Incoming Queue Dir = /var/spool/postfix/hold
    Outgoing Queue Dir = /var/spool/postfix/incoming
    MTA = sendmail
    更改为:
    MTA = postfix
    Virus Scanners = none
    更改为:
    Virus Scanners = f-prot
    Always Include SpamAssassin Report = no
    更改为:
    Always Include SpamAssassin Report = yes
    Use SpamAssassin = no
    更改为:
    Use SpamAssassin = yes
    Required SpamAssassin Score = 6
    更改为:
    Required SpamAssassin Score = 4
    SpamAssassin User State Dir =
    更改为:
    SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin
    SpamAssassin Install Prefix =
    更改为:
    SpamAssassin Install Prefix = /usr/bin
    SpamAssassin Local Rules Dir =
    更改为:
    SpamAssassin Local Rules Dir = /etc/MailScanner
    修改/etc/postfix/目录下的header_checks文件,新增加以下一行内容到文件中,详细内容如下:
    /^Received:/ HOLD
    修改/etc/postfix/目录下的main.conf文件,详细内容如下:
    #header_checks = regexp:/etc/postfix/header_checks
    更改为:
    header_checks = regexp:/etc/postfix/header_checks
    停止Postfix服务器,因为启动MailScanner服务时会自动启动Postfix服务器:
    启动MailScanner服务器和设置开机时自动启动:
    # service MailScanner start
    Starting MailScanner daemons:
     incoming postfix:                                                        [  确定  ]
     outgoing postfix:                                                         [  确定  ]
     MailScanner:                                                            [  确定  ]
    # chkconfig --level 33 MailScanner on

    (6)病毒检测测试:

    从网站(http://www.eicar.org/anti_virus_test_file.htm)下载一个测试病毒文件:eicar.com。编写一封测试邮件(附件中带上的eicar.com文件)。系统检测到邮件病毒,见图1。
 

500)this.width=500;" border=0>
图1 病毒检测界面
 
    查看maillog日志,请确认日志中是否存在以下相近的信息:

    详细内容:
    Jan  8 12:11:08 mail MailScanner[9199]: Virus Scanning: F-Prot found virus EICAR_Test_File
    Jan  8 12:11:08 mail MailScanner[9199]: Virus Scanning: F-Prot found 1 infections
    Jan  8 12:11:08 mail MailScanner[9199]: Infected message E73EE13C07C.07685 came from
    Jan  8 12:11:08 mail MailScanner[9199]: Virus Scanning: Found 1 viruses
    Jan  8 12:11:09 mail MailScanner[9199]: Requeue: A9D6413C085.39DDE to 6414713C089
    Jan  8 12:11:09 mail MailScanner[9199]: Uninfected: Delivered 1 messages
 
    如出现以上的日志信息就代表您的F-Prot Antivirus + MailScanner-4.31.6-1架设已经成功啦,

     (7)如果希望邮件服务器每次启动都能自动运行,可以用服务设置功能。以root权限运行命令:
#redhat-config-services
 
 
500)this.width=500;" border=0>
图2 邮件服务器自动启动
    打开如图2所示的窗口,在dovecot服务选项加上勾,然后重新启动系统,这样系统会启动邮件服务。
三、 安装配置Web邮件服务器     (1)软件安装     #rpm -ivh perl-5.8.5-12.1.i386.rpm
    # rpm -ivh perl-CGI-SpeedyCGI-2.22-1.2.el4.rf.i386.rpm
    # rpm -ivh perl-Compress-Zlib-1.34-1.2.el4.rf.i386.rpm
    # rpm -ivh perl-suidperl-5.8.5-12.1.1.i386.rpm
    # rpm -ivh perl-Text-Iconv-1.4-1.2.el4.rf.i386.rpm
    # rpm -ivh openwebmail-2.51-1.i386.rpm
    (2) 初始化配置文件     运行命令:
    # /var/www/cgi-bin/openwebmail/openwebmail-tool.pl ――init
    根据屏幕提示修改配置文件,见图3。
 
500)this.width=500;" border=0>
图3 屏幕提示要修改配置文件

    (3)修改配置文件
    #cd /var/www/cgi-bin/openwebmail/etc/     使用编辑器手工建立 dbm.conf文件,主要包括以下内容:
    dbm_ext           .db
    dbmopen_ext       .dbm
    dbmopen_haslock   no
 
    (4)重新初始化配置文件
   # /openwebmail-tool.pl –init     系统询问是否发送站点包括选择不发送(按“n”按钮),见图4。
 
500)this.width=500;" border=0>
图4 重新初试化设定

    (5)修改其他文件
     把/var/www/cgi-bin/openwebmail/etc/openwebmail.conf 文件中字段:
    # domainnames auto
    更改为:
    domainnames cao.net      #更改为自己定义的域名#
    default_language en
    更改为:
    default_language zh_CN.GB2312           #更改为简体中文版介面#
    把/var/www/cgi-bin/openwebmail/etc/defaults/openwebmail.conf文件中的字断:
smtpserver 127.0.0.1
    更改为:
    smtpserver 192.168.1.253 #更改smtp服务器的地址#
    authpop3_server localhost
    更改为:
    authpop3_server 192.168.1.253 #更改pop3服务器的地址#
    把/var/www/cgi-bin/openwebmail/etc/defaults/dbm.conf文件中的字断:
    dbmopen_ext none
    更改为:
    dbmopen_ext .db
    dbmopen_haslock no
    更改为:
    dbmopen_haslock yes
    smtpserver 192.168.1.253 #添加smtp服务器的地址#
 
     (6)再次运行openwebmail-tool.pl文件

    然后在浏览器输入:http://localhost/var/www/cgi-bin/openwebmail/openwebmail.pl即刻进入见图5。
 

500)this.width=500;" border=0>
图5 openwebmai的登录界面

    至此,Webmail邮件服务器设定就完成了,下一篇文章将介绍邮件服务器主要配置和管理,敬请关注。 四、openwebmail的系统基本设置和管理     (1) 基本工作界面设定     图5是 中文Openwebmail工作界面。
 
500)this.width=500;" border=0>
图5 中文Openwebmail工作界面

  图5是基本设置选项,它允许你改变许多设定以适合你的邮寄需求。假如你是初次使用Open Webmail,你应当先进入设定控制画面,而不是直接到收件箱。

  首先点击配置按钮进行设置选项的单元。包括:个人信息 ,外观设定 ,读信相关设定 ,邮件操作设定 ,回信设定 ,邮件过滤设定 ,日程表设定 ,其他设定。见图6。

500)this.width=500;" border=0>
图6 Openwebmail的配置界面

  个人信息主要内容见下表。
 
500)this.width=500;" border=0>

  外观设定可以让你改变颜色、格式、大小、图片和其他的显示设定。主要内容见见下表。
500)this.width=500;" border=0>
 
  读信相关设定相当简单,改变收信的方法只要确定方块勾选或是不勾选就可以了。你可以依据你的使用喜好和最适屏幕宽度来设定。 见下表。
500)this.width=500;" border=0>
 
  邮件操作设定关于邮件的执行行为设定 (例如移动或是复制)。见下表。
500)this.width=500;" border=0>

  回信设定是关于信件回复时的方式 ,见下表。
 

   邮件过滤设定决定如何过滤邮件。见下表。
500)this.width=500;" border=0>
 
   日程表设定见下表。
500)this.width=500;" border=0>
 
    其他设定收集一些设定项目,不一定会被归类在一起的项目。见下表。
500)this.width=500;" border=0>

  (2)Openwebmail的使用非常简单,在的首页的“帮助”中有200页的常见操作信息。中文帮助界面见图7。

500)this.width=500;" border=0>
图7 Openwebmail的帮助中心

  如果你无法在帮助中找到您所需要的答案,或是在安装Open Webmail需要协助,请连到下列网站...
Official Open Webmail Site
SourceForge.net Webmail Forum
FreshMeat.net Open Webmail Forum     (3)openwebmail的日志文件的定期地清理   日志文件都会随着时间的推移和访问次数的增加而迅速增长,因此必须对日志文件进行定期清理以免造成磁盘空间的不必要的浪费。同时也加快了网管员查看日志所用的时间,因为打开小文件的速度比打开大文件的速度要快。要使系统重新使用空的日志文件,可以执行操作:
修改文件 /etc/logrotate.d/syslog,在文件尾加入以下内容:
/var/log/openwebmail.log {
       postrotate
           /usr/bin/killall -HUP syslogd
       endscript}
五、增强Web邮件服务器的安全
    (1)Web服务器的安全

    由于使用了Apache Web服务器,所以要为其配置SSL库。这些库提供了SSL需要的功能。在你查看电子邮件时,需要有一个安全的Web服务器来保护你的密码,以及所有流到 Web服务器的信息。这样可以避免别有用心的人通过监听会话来获取密码。由于Apache服务器安全不是本文关注重点,所以具体步骤请查看相关文档。
 
    (2)保护postfix服务器

    本文中openwebmail是基于postfix邮件服务器的,所以要保护postfix服务器。     1、  通过阻止IP地址或主机名方式访问邮件服务器来拒收邮件:
    在main.cf配置文件中使用以下行定义网络地址“
    # mynetwork=192.168.1.0/24
    表示除非客户端的ip地址符合$mynetworks参数定义的范围则接受该客户端的连接请求,才转发该邮件。

    2.在postfix中添加RBL功能
    RBL(Realtime Blackhole List)是实时黑名单。国外有一些机构提供RBL服务,它们把收集到的专发垃圾邮件的IP地址加入他们的黑名单,我们只要在postfix中加入RBL 认证功能,就会使我们的邮件服务器在每次收信时都自动到RBL服务器上去查实,如果信件来源于黑名单,则postfix会拒收邮件,从而少受垃圾邮件之苦。通常在mail.cf加入
    map_rb1_domains=mail-abuse.org
    smtp_client_restrictions=reject_map1_rb1
    其中第一行设置需要联系得到的RBL列表的所有主机,接着设置需要进行应用的限制。然后存盘,从新启动postfix服务器。

    3 、通过化装隐藏内部邮件地址
    如果网络中有发送邮件的中央邮件服务器,它为主机提供许多服务。那么必须隐藏邮件地址的主机名称部分。例如在一台名为pc-joe.yourcompany.com服务器上有一个用户名称是joe,当joe通过Postfix网关发送邮件时,他的地址显示为:[email protected]。对外隐藏内部主机名称是一个很好的安全策略,相关配置文件下列选项:
masquerade_domains = $mydomain
masquerade_exceptions = root
 
    上面代码第一行表示:对所有域进行化装,通过变量$mydomain来完成。这意味[email protected]以后作为[email protected].出现。上面代码第二行表示:不对root用户进行化装。
 
    4.使用header_checks & body_checks
    要使用 header_checks 或 body_checks 請在 main.cf手工建立:
    header_checks = regexp:/etc/postfix/header_checks
    body_checks = regexp:/etc/postfix/body_checks
 5.拒绝找不到 DNS 资源记录中 MX / A 记录的主机的邮件
这个机制是查寻寄件者的主机地址,再使用这个位置去做 DNS 查寻,一般在垃圾邮件发送者会随意造一个主机名称以企图蒙骗过关,对于这种手法实只要使用一个设定既可。在 main.cf 加上一行:
smtpd_sender_restrictions = reject_unknown_sender_domain
    (3) 升级openwebmail版本

  早期的openwebmail版本存在一些安全隐患,所以要使用2.3以后版本。过程和安装相同。另外由于openwebmail功能强大包含系统信息也比较多,所以,您必须要了解到这个软件有可能会产生一些安全上的漏洞的。建议您随时注意openwebmail 官方网站:http://openwebmail.com/,这里不定期的会有一些安全技术公告,可以帮助您的web邮件服务器使用更加安全。

六、加速邮件服务器     (1)使用speedcgi来加速   针对Openwebmail速度慢的缺点,可以使用speedcgi来加速。
# rpm -ivh perl-CGI-SpeedyCGI-2.22-1.2.el4.rf.i386.rpm
  接着执行命令:“speedy_convert”,这个命令会自动设定已安装的 OpenWebMail 以便让其以 SpeedyCGI 方式执行。
 
    (2)启动HTTP资料压缩传送

  从OpenWebMail 2.10版本开始, 新增支持 HTTP 数据压缩传送功能, 对于透过调制解调器联机或是使用 PDA 上网的使用者来说, 这个功能能够大幅地降低传输网页数据所需的时间. 要让这个功能正常动作, 必须先在您的 openwebmail server 上安装 Compress-Zlib模块,方法如下:
    # wget  http://openwebmail.com/openwebmail/download/packages/Compress-Zlib-1.33.tar.gz
    tar -zxvf Compress-Zlib-1.33.tar.gz
    cd Compress-Zlib-1.33
    perl Makefile.PL
    make ;make install

    此时在登录openwebmail时会出现“HTTP资料压缩传送”选项。这样可以加速邮件服务器运行速度。

七、常见问题说明     1. 登录之后收信主界面不出现,大多是因为个人目录所用硬盘空间和电子邮件相加已经超过个人硬盘可用容量(quota)。此时需要清理磁盘空间。     2. 收到中文信件,却是乱码显示。在 Pref(个人偏好设定) Language 选项要选Chinese(Simplified) 。就会正确显示中文。如果只用浏览器选择,通常会重复出现乱码画面。     3. 尽量使用 Open webmail 提供的 Back (回上一页),如果用浏览器选择上一页,比较容易出问题。     4. 有时在转换信件匣或换页读信时,会有 Internal server error 错误讯息出现,通常重新整理即可继续使用。

    5. 404 Not found,Session Timeout,Sorry,your session appears to have timed out! Please go back and login。这个信息表示超时。确省是60 分钟,如果觉得每次联机不够久,您可以在设置选项延长timeout时间。

    6.  在写信的过程中,输入信的内容时,若按到 ESC 键,会将输入内容全部清除,可以按 Ctrl + z 键恢复。     7. RHEL4上关掉SELinux的正确方法为:修改/etc/selinux/config文件中的SELINUX="" 为 disabled 然后重启。     8. 连接到Openwebmail首页出现“You don't have permission toaccess openwebmail.pl on this server”信息,通常是Apache服务器CGI目录权限设定不对。下面是一个标准:
    <Directory /var/www/cgi-bin>
    AllowOverride All
    Options ExecCGI
    Order allow,denya
    Allow from all
    </Directory>

  总结:以上就建立了一个高速安全的Web邮件服务器。Openwebmail中文界面非常符合友好。从界面、功能来说,应该说是开源web邮件系统里最好的。openwebmail还可以直接修改系统用户的密码,对小企业来说是很好的方案,在只有用户数量不是太多的系统上,不需要用mysql等数据库来做用户认证,大大简化了设置。只要注意在建立用户时不要给shell的权限就行了。本文使用Postfix +Openwebmail组合,当然Sendmail+Openwebmail或者Qmail+Openwebmail也是可以的。

相关阅读 更多 +
排行榜 更多 +
太平洋飞虎队

太平洋飞虎队

飞行射击 下载
像素世界杯中文版下载

像素世界杯中文版下载

赛车竞速 下载
哆啦A梦的铜锣烧店物语破解版下载

哆啦A梦的铜锣烧店物语破解版下载

模拟经营 下载