• zz LAB_RHEL5下sendmail+dovecot+openwebmail邮件系统配置(图片链接已失效 2010/11/08)


    电子邮件系统对于一个企业的作用相信已经没有人不知道,目前比较主流的邮件系统包括SendMail、exchange、Lotus Notes、Qmail、Postfix等。

    Microsoft的Exchange只能运行在Windows平台,而且必须基于活动目录,虽然在功能上exchange的确有一定的优势,比如用户管理、与office等微软其它产品的高集成性等等,但运营成本过高。

    Lotus Notes作为IBM的产品性能、功能当然是不用说了,不过本人总认为IBM的产品都有一个共同的特点,那就是只有运行在IBM的软、硬件平台时才能将其功能最大化的发挥出来。
    SendMail可以运行在几乎所有的类Unix平台,功能也比较强大。当然SendMail也有一些自身的问题,但随着其版本的升级很多方面已经有了很大的改善。

    本文中主要介绍在RHEL 5下通过SendMail搭建一个邮件系统平台,并结合dovecot实现pop3/IMAP4以及通过OpenWebMail实现客户端通过浏览器访问邮件系统。在讲述过程中采用以下网络拓扑。

    一、安装并配置DNS
    DNS的作用相信也不需要过多介绍了,如果企业的邮件服务器如果需要接收来到公网的邮件,需要拥有公网IP及域名,而DNS解析工作都是有ISP提供的。在本文的配置中假设该邮件系统只供企业内部使用,所以需要配置DNS。

    1、安装bind及相关软件包。
    #rpm -ivh /mnt/cdrom/Server/bind-9.3.6-4.p1.el5.i386.rpm
    #rpm -ivh /mnt/cdrom/Server/bind-chroot-9.3.6-4.p1.el5.i386.rpm
    #rpm -ivh /mnt/cdrom/Server/caching-nameserver-9.3.6-4.p1.el5.i386.rpm

    2、在/var/named/chroot/etc目录下有一个全局配置的例子文件,将其复制一份改名为named.conf。如下图复制时一定要加-a(或-p),如果全局配置文件的拥有组不是named时,BIND服务是无法运行的。



    3、编辑named.conf文件,修改如下图所示位置,保存退出。

    4、修改/var/named/chroot/etc/named.rfc1912.conf(DNS主配置文件)文件最尾部添加内容如下。

    5、在/var/named/chroot/var/named中正向、反向各有一个例子,将这二个例子复制一份进行修改,如下图复制时一定要加-p,因为如果区域配置文件的拥有组不是named时,BIND服务是无法运行的。

    6、编辑正向解析文件yinhe.zone,修改如下。

    7、编辑反向解析文件yinhe.local,修改内容如下。

    8、启动bind并将其设置为自动运行,再使用nslookup测试是否可以正常解析。

    注意:如果无法正常解析,请使用system-config-network命令检查本机网卡IP和DNS配置!
              确认DNS配置正确的情况下,使用setup命令检查Firewall配置是否允许tcp\udp的53端口!

    二、安装并配置SendMail

    1、安装sendmail及相关软件包。
    #rpm -ivh /mnt/cdrom/Server/sendmail-8.13.8-2.el5.i386.rpm   \\默认已安装
    #rpm -ivh /mnt/cdrom/Server/m4-1.4.5-3.el5.1.i386.rpm         \\默认已安装
    #rpm -ivh /mnt/cdrom/Server/sendmail-cf-8.13.8-2.el5.i386.rpm
    #rpm -ivh /mnt/cdrom/Server/sendmail-doc-8.13.8-2.el5.i386.rpm

    2、增加本服务器可处理的FQDN或区域名(只有在列表的本服务器才处理)。这需要修改/etc/mail/local-host-names文件。

    3、SendMail默认只侦听127.0.0.1,要修改sendmail.mc配置文件侦听指定网络接口或0.0.0.0(所有IP)

    4、通过sendmail.mc生成sendmail.cf文件,并重启sendmail服务。
        SendMail运行过程是读取/etc/mail/sendmail.cf配置文件,但该文件配置比较复杂,所以一般是配置/etc/mail/sendmail.mc,然后通过以下命令生成sendmail.cf文件(每次修改sendmail.mc后都必须通过使用该命令后再重启sendmail服务,否则配置不会生效)。
    #m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
    在/etc/mail/sendmail.mc文件中对格式要求非常严格:每句左边不能有空格;区分大小写;注释在最左边加dnl,每句必须以dnl结束;增加的语句,不能在最后一行;注意语句中的引号。


    4、执行完以上步骤后就可以使用SendMail测试收发邮件了。
         到此一个最简单的邮件系统已经通过SendMail实现了。直接使用系统本地账号做为邮件账号就可以了,下面来看看如何通过telnet命令测试邮件系统是否可以正常工作。

    发送邮件:mary@yinhe.com ---> tom@yinhe.com

    接收邮件:
        使用收件人账号登陆系统,在linux字符模式中收取当前用户收件箱内容使用mail命令,Mial命令行模式下可直接输入”? ”查询命令行帮助。如下图所示接收及查看邮件内容:

    三、SendMail其它配置

    1、SendMail本地别名
        SendMail可以通过本地别名实现以下功能邮件转发、邮件群发等功能,配置时用户必须是本地邮件用户。实现时需要vim编辑/etc/aliases文件,在aliases文件最末尾添加内容即可,例如下图:

    user1的邮件转发一份user2。
    user3的邮件转发给user4,user3收不到。
    发送给hr(系统中没有这个用户)的邮件user5及user6可收到。

    2、SendMail虚拟别名
    SendMail可以通过本地别名实现以下功能邮件转发等功能,配置时用户可以任意,该功能可以将邮件转发
    到外部区域。实现时需要vim编辑/etc/mail/virtusertable文件内容,举例如下图:

       1:发送给user1@sina.com的邮件转发到user2@sohu.com
       2:发送给user3@yinhe.com的邮件转发到administrator@yinhe.com
       3:所有发送给@yinhe.com区域的邮件全部转发到user4@sina.com
       4:所有发送给@sohu.com的邮件转到对应%1@gmail.com,%1表示收件人

    3、SendMail地址伪装
    SendMail对本服务器所有发出的邮件进行地址伪装(自动修改发件人地址)。
    全局伪装:全局伪装针对所有本区域用户,此功能需要vim修改/etc/mail/sendmail.mc配置文件,下面的例子中所有发住外部区域的邮件收件人所有区域自动修改为yinhe.com:

    指定用户伪装:指定用户的地址伪装,该功能只能用于收件人是外部域。这个可以和全局地址伪装同时使用。下面的例子中将所有user7@sina.com发出的邮件发件人修改为root@yinhe.com
       a.修改/etc/mail/sendmail.mc文件。在文件最末尾添加内容如下:

       b.建立用户列表。手动创建/etc/mail/genericstable文件并添加内容如下:

       c.在lost-hosts-names中加入虚拟区域名称


    4、SendMail访问控制
    通过/etc/access可以对通过SendMail的邮件流进行控制,其对邮件流通过的动作主要有以下几种:
    From:发件人是其它域,收件人是当前域
    To:发件人是当前域,收件人是其它域
    Connect:发件人、收件人都是其它域
    中继限制可用动作:
    REJECT:拒收并发退信通知
    OK:无条件接收,当与REJECT发生冲突时优生
    RELAY:接收,当与REJECT发生冲突时REJECT优先
    DISCARD:拒绝
    ERROR:550 your message:拒绝,返回特定通知
    下图是一个/etc/access文件的例子:

    四、Dovecot安装和配置

        SendMail只能实现SMTP协议的功能,而目前在使用邮件系统时很多用户还是习惯使用类似foxmail的一些邮件客户端软件,这些软件通常都支持pop3、IMAP4等协议。如果希望在RHEL中实现pop3、IMAP4需要使用dovecot。

    1、安装dovecot及相关软件包。
    #rpm –ivh /mnt/cdrom/Server/perl-DBI-1.52-2.el5.i386.rpm
    #rpm –ivh /mnt/cdrom/Server/mysql-5.0.77-3.el5.i386.rpm
    #rpm –ivh /mnt/cdrom/Server/dovecot-1.0.7-7.el5.i386.rpm

    2、dovecot配置比较简单,通常只需修改Dovecot修改支持的协议即可。在/etc/dovecot.conf中已有,只需取消注释即可(如下图)。

    3、启动dovecot并将其设置为自动运行。

    五、配置POPs&IMAPs

        pop3及IMAP4协议都是采用明文方式进行数据传输,不过可以通过SSL对其数据传输进行加密。配置方法如下:
    在/etc/pki/tls/certs目录下输入以下命令生成密钥(dovecot.pem 文件名可任意)。

    编辑/etc/dovecot.conf文件,修改内容如下:

    在dovecot配置完成后可以通过mutt命令对pop3/pops及imap/iamps进行测试。具体方法如下:
    1、使用POP3方法验证Dovecot
    mutt -f pop://user@server[:port]    或   mutt -f pops://user@server[:port]
    输入命令可通过pop(如使用pops方式,将下图命令中pop改为pops即可)方式收取邮件,注意是接服务器名称。如下图所示,tom用户使用pop方式收取邮件。

    2、使用IMAP4方法验证Dovecot
    mutt -f imap://user@server[:port]   或   mutt -f imaps://user@server[:port]

    输入以上命令可通过imap方式收取邮件。如下图所示:

    输入”o”同意开始通过imap连接服务器。

    进入后输入用户密码,可看到该用户的邮件。

    在上、下移动选择邮件回车可查看。

    六、OpenWebMail配置

         对于一个完整的邮件系统,提供用户通过浏览器访问是一个必不可少的功能,在linux下可使用OpenWebMail为用户提供该功能。不过在RHEL中默认并没有提供OpenWebMail的软件包,只有从openwebmail.org网站或从其它rpm包下载网站下载。OpenWebMail需要使用到apache、perl-Text-Iconv、perl-suidper软件包。

    1、安装OpenWebMail及相关软件包。
    rpm -ivh perl-Text-Iconv-1.7-2.el5.i386.rpm
    rpm -ivh perl-CGI-SpeedyCGI-2.22-1.2.el5.rf.i386.com
    rpm –ivh perl-suidperl-5.8.8-10.el5_2.3.i386
    rpm –ivh /mnt/cdrom/Server/httpd-2.2.3-31.el5.i386.rpm
    rpm -ivh –-nodeps openwebmail-2.53-3.i386.rpm
    rpm -ivh –-nodeps openwebmail-data-2.53-3.i386.rpm

    2、将配置文件/var/www/cgi-bin/openwebmail/etc/dbm.conf的内容修改为以下内容。

    3、使用以下命令初始化OpenWebMail。

    4、修改相关默认配置,编辑/var/www/cgi-bin/openwebmail/etc/openwebmail.conf文件。
    default_language zh_cn gb2312                       将预设语言改为简体中文。
       default_iconset Cool 3D.Chinese.Simplified    将English改为Chinese.Simplified,显示中文图标。
       domainnames yinhe.com              更改为自己定义的域名。
       smtpserver 192.168.1.100              更改smtp服务器的地址。
       authpop3_server 192.168.1.100      更改pop3服务器的地址。
       auth_module auth_unix.pl             将用户认证方式改为使用/etc/passwd及/etc/shadow文件

    5、邮件客户端使用浏览器打开地址http://yinhe.com/cgi-bin/openwebmail/openwebmail.pl就可以访问到openwebmail了。

    6、很显然这个地址太长了,可以修改/etc/httpd/conf/httpd.conf文件中增加如下内容。

    修改完成之后客户端可通过地址http://yinhe.com/mail就可以访问openwebmail了。

    7、设置用户配额。
    在/var/www/cgi-bin/openwebmail/etc/openwebmail.conf中最尾几行是配额的例子,下面是相关参数的作用。
    quota_module            quota_unixfs.pl       quota的模板,由于邮件帐户还是Linux帐户,所以选它
    spool_limit                5120                    邮箱限定5M
    quota_limit               10240                  所有空间(包括邮箱)限定10M
    quota_threshold         70                     空间使用达到配额的70%就提示
    delmail_ifquotahit      no                     是否在空间使用超出配额时删除旧的邮件
    delfile_ifquotahit        no                     是否在空间使用超出配额时删除旧的文件

    到此整个邮件环境已搭建完成,不过这些只能算是第一步,对于一个成熟的邮件系统还有很多工作要做。永远都要记住邮件系统是貌似简单但实际维护量非常大的应用系统。比如防止垃圾邮件、病毒邮件、用户行为控制等等,这些将会在后继的文章中为大家讲解。

    ----------------------------------------------------------------------------------------------

    redhat9.0 默认完全安装,用的sendmail,收邮件一切正常,smtp发邮件l还是错误。请问怎么解决法?

    -----------------------------------
    收hotmail发来的邮件的时候发信人一直是Win Socket
    奇怪啊奇怪,怎么能变成hotmail地址?

    尚未解决 
    -----------------------------------

    sendmail smtp错误

    参考了下peng大大的"用redhat8.0自带的sendmail+sasl配置邮件服务器"
    修改了sendmail.mc 
    把下面两项去掉了注释
    1、TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
    2、define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl 

    然后
    # m4 /etc/mail/sendmail.mc >; /etc/sendmail.cf
    # service sendmail restart

    发给国内邮箱的错误解决了
    foxmail和outlook都可以正常发信收信而且显示用户名也正常。

    但是发给hotmail的那个错误依然存在,
    而且收到的hotmail的邮件发信人显示都是Win Socket

    不知道怎么办了.........哪位有经验的大大指点下?

    PS:M$的东西就是奇怪啊!

    sendmail smtp错误

    终于搞定了,这个sendmail配置了两天多。
    检查下来hotmail出错的原因是不小心在本地域中加了hotmail.com

    关于smtp发现使用foxmail就算你没钩smtp认证如果不认证不能发的话也会给你自动用pop帐号认证。outlook的话就不会这样。

    另外在peng大大和心余大大的文章里关于sendmail.mc是这样改的
    其中:
    1、2是打开注解的,是打开相应的认证机制,主要是为了支持outlook
    3、4是添加的,设置相应的mta and msa的所用端口。
    5、6要注掉。 5允许通过网络连接Sendmail,6 禁止不可解析的域名relay邮件
    1、TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
    2、define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
    3、DAEMON_OPTIONS(`Port=25,Name=MTA')dnl
    4、DAEMON_OPTIONS(`Port=587,Name=MSA,M=Ea')dnl
    5、dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')
    6、dnl FEATURE(`accept_unresolvable_domains') 


    实际我配置下来3、4不添加,5、6不注释也可以实现smtp的认证。
    但是5这条要稍微改一下DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')

    否则外部ip连接你25端口是拒绝连接的。

    以上是我配置sendmail的一点点经验总结,webmail还没有做,回头有空做一下。
    推荐广大的菜鸟和新手们使用webmin和ssh配合配置sendmail,修改比较方便也比较容易发现错误。 
    -----------------------------------
    可以用outlook发给本机用户,
    但是发给hotmail就出现如下错误
    由于服务器拒绝收件人之一,无法发送邮件。被拒绝的电子邮件地址是“vampirechina@hotmail.com”。 主题 '123456', 帐户: 'root', 服务器: '61.131.12.248', 协议: SMTP, 服务器响应: '550 5.1.1 <vampirechina@hotmail.com>;... User unknown', 端口: 25, 安全(SSL): 否, 服务器错误: 550, 错误号: 0x800CCC79 
    已解决 
    -----------------------------------


    -----------------------------------

    发给etang等其他国内邮箱也有错误
    由于服务器拒绝收件人之一,无法发送邮件。被拒绝的电子邮件地址是“max_uo@etang.com”。 主题 '123456', 帐户: 'root', 服务器: '61.131.12.248', 协议: SMTP, 服务器响应: '550 5.7.1 <max_uo@etang.com>;... Relaying denied. IP name lookup failed [61.171.84.109]', 端口: 25, 安全(SSL): 否, 服务器错误: 550, 错误号: 0x800CCC79 

    已解决

    --------------------- 我可以操纵冰冷的代码,但我操纵不了我的人生...... [url=http://www.puya360.com]西安普雅软件工作室[/url]
  • 相关阅读:
    Computability 2: Gödel Number
    Computability 1: Computational Models
    Axiomatic Set Theory
    External Sorting Model
    Minimum Spanning Tree
    All-Pairs Shortest Paths
    Python 泰坦尼克生存率预测(修改)
    Python 分析Kaggle_Titanic案例
    Python 北京二手房成交数据分析过程
    数据挖掘主要解决的四类问题以及常用到的算法
  • 原文地址:https://www.cnblogs.com/ternastone/p/1847214.html
Copyright © 2020-2023  润新知