今天总结一下CentOS 5.5下MAIL服务的整合与搭建过程,之所以写到这里是为了以后工作方便,还有就是和大家分享一下经验!
         一、首先是准备工作:
                  1.1.更新一下系统文件
                     [root@mail ~]#   yum update
 
                1.2. 安装常用编辑环境(系统一般都要个这个环境)
                     [root@mail ~]# yum install gcc gcc-c++  automake autoconf
 
    
        
 
          二,安装开始
                    
                    2.1 安装apache
                           [root@mail ~]# yum install httpd
 
            
       
                   
                    2.2 安装sendmail
                         2.2.1      [root@mail ~]# yum -y install sendmail  sendmail-cf m4
                          sendmail        是主程序文件
                         sendmail-cf    是主要配置文件,但是在实际配置中往往通过sendmail.mc来修改sendmail.cf中的内容,因为sendmail.cf过于难懂,如何转变将在后面细说。
                          m4                   是修改配置文件的工具,用它来讲sendmail.mc的更改内容加载进sendmail.cf
                       
                        
             
                           2.2.2    检测启动级别
                           [root@mail init.d]# chkconfig --list sendmail
                          设置3、5级别启动
                           [root@mail init.d]# chkconfig --level 35 sendmail on
                            
 
                      
                             2.2.3  设置程序开机启动
                              [root@mail init.d]# vi /etc/rc.local
                                       添加:/etc/init.d/sendmail start             语句
 
                             2.2.4  配置本地域名解析
                             [root@mail init.d]# vi /etc/hosts
                                       添加:192.168.230.131  mail.test.com    mail 语句
                             
                              2.2.5 启动服务
                            
     
 
                   2.3  sendmail配置
 
                            2.3.1 为相应域名提供服务
                            [root@mail init.d]# vi  /etc/mail/local-host-names
                            添加:test.com  (即提供服务的域名)           语句
                    
                           2.3.2 配置sendmail.mc文件
                           2.3.2.1. [root@mail mail]# vi sendmail.mc
                            找到:DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
                           变为:DAEMON_OPTION(`Port=smtp,Addr=0.0.0.0,Name=MTA')dnl
                           以为为每一个IP地址都提供发送邮件服务,而不只是本地地址。
                           找到:分别去掉行首的dnl(don't load),表示开启由saslauthd守护进程提供的SMTP账户认证机制,要不然谁都可以使用邮箱了。
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
 
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
                              
                     2.3.3 更新配置文件到sendmail.cf
                               [root@mail mail]# m4 sendmail.mc > sendmail.cf
 
                     2.3.4 检测认证进程,并设置启动级别
                              
                     2.3.5 开启转发权限
                              [root@mail mail]# vi /etc/mail/access
                    
 
                              重新加载access.db数据库
                                [root@mail mail]# makemap hash /etc/mail/access < /etc/mail/access.db
                                居然提示错误
                
                                 最后倒了一下啊顺序就OK了,郁闷
                                  
                             
小注释: /etc/mail/local-host-names与/etc/mail/access的区别
        /etc/mail/local-host-names :这个档案主要用来处理一个主机同时拥有多个主机名称时候的收发信件主机名称问题。 這個檔案的用途可大了! 这个档案的用途可大了! 當你的主機擁有多個HOSTNAME 的時候,例如我的主機擁有三、四個主機名稱,那麼是否每個名稱都可以用來做為收受信件的主機名稱( To: .. ) 呢? 当你的主机拥有多个HOSTNAME的时候,例如我的主机拥有三、四个主机名称,那么是否每个名称都可以用来做为收受信件的主机名称( To: .. )呢? 並非如此! 并非如此! 如果你的主機名稱為test1.your.domain 以及test2.your.domain ,而且這兩個hostname 您都希望可以用在收受電子郵件,果真如此,那麼,你就必需將這兩個名字都寫入local-host-names 這個檔案當中,一個主機名字佔用一行。 如果你的主机名称为test1.your.domain以及test2.your.domain ,而且这两个hostname您都希望可以用在收受电子邮件,果真如此,那么,你就必需将这两个名字都写入local -host-names这个档案当中,一个主机名字占用一行。 注意:沒有寫入這個檔案的『你的主機名稱』,那信件將無法正確的寄達這部主機喔 ~例如:www.vbird.adsldns.org、vbird.adsldns.org這兩個主機名稱的ip 都是相同的,也就是指向同一台機器上。 注意:没有写入这个档案的『你的主机名称』,那信件将无法正确的寄达这部主机喔 ~例如:www.vbird.adsldns.org、vbird.adsldns.org这两个主机名称的ip都是相同的,也就是指向同一台机器上。 假設這台主機名稱預設為vbird.adsldns.org,那在預設情況下,寄給 userid@vbird.adsldns.org 都是ok 沒有問題的! 假设这台主机名称预设为vbird.adsldns.org,那在预设情况下,寄给userid@vbird.adsldns.org都是ok没有问题的! 但是寄給userid@www.vbird.adsldns.org就會出現錯誤。 但是寄给userid@www.vbird.adsldns.org就会出现错误。 其中原因是因為沒有告訴MTA 除了vbird.adsldns.org 這個主機名稱外,還有www.vbird.adsldns.org 也是指向這台主機上。 其中原因是因为没有告诉MTA除了vbird.adsldns.org这个主机名称外,还有 www.vbird.adsldns.org也是指向这台主机上。 所以寄給userid@www.vbird.adsldns.org會出現錯誤,通常就是mail loop to me,要不然就是不允許relay 的錯誤情況。 所以寄给 userid@www.vbird.adsldns.org会出现错误,通常就是mail loop to me,要不然就是不允许relay的错误情况。
            /etc/mail/access 在你啟動了Sendmail 以及設定好主機名稱( local-host-names )之後,那你就可以利用『 在你的主機上面利用你的主機來寄信 』了!在你启动了Sendmail以及设定好主机名称( local-host-names )之后,那你就可以利用『 在你的主机上面利用你的主机来寄信 』了! 為什麼要加上『 在你的主機上面 』呢?为什么要加上『 在你的主机上面 』呢? 還記得我們在前面有提過,為了杜絕廣告與垃圾信件,所以預設的情況中, Sendmail是關閉Open Relay 的對吧!还记得我们在前面有提过,为了杜绝广告与垃圾信件,所以预设的情况中, Sendmail是关闭Open Relay的对吧! 但是為了主機使用者的方便,所以我們預設是有啟動local 這個Mailer ,也就是說:但是为了主机使用者的方便,所以我们预设是有启动 local 这个Mailer ,也就是说:
  1. 只有使用者是在主機上面發信的,例如使用SSH 登入主機後,以mail 這個指令來發信; 只有使用者是在主机上面发信的,例如使用SSH 登入主机后,以mail这个指令来发信;
  2. 又或者使用者直接在主機上面使用X-Window System 裡面的郵件代理人,亦即是Netscape 或者是Kmail 等軟體來發信 又或者使用者直接在主机上面使用X- Window System里面的邮件代理人,亦即是Netscape或者是Kmail等软体来发信
的時候,我們的Sendmail 才會幫使用者『寄信』喔!的时候,我们的Sendmail 才会帮使用者『寄信』喔! 至於其他的電腦來源的『寄信』郵件,Sendmail一概將他退信回去!至于其他的电脑来源的『寄信』邮件,Sendmail一概将他退信回去! 那麼如果我想要在其他的電腦上面使用我這部Mail Server來寄信呢?那么如果我想要在其他的电脑上面使用我这部Mail Server来寄信呢? 這個時候就要編輯『 /etc/mail/access 』這個信任網域設定的檔案啦!这个时候就要编辑『 /etc/mail/access 』这个信任网域设定的档案啦! 假設一個例子好了:假设一个例子好了:
  • 我的 Sendmail 主機想要支援我內部網域的所有電腦來寄信,而我內部網域的電腦IP 網段為192.168.0.0/24 這一段;我的 Sendmail 主机想要支援我内部网域的所有电脑来寄信,而我内部网域的电脑IP 网段为192.168.0.0/24 这一段;
  • 還有,我另外有一個公共IP ( Public IP )為140.116.44.125 ,也想要讓他可以寄信;还有,我另外有一个公共IP ( Public IP )为140.116.44.125 ,也想要让他可以寄信;
  • 此外,我發現 192.168.1.100 電腦使用者都會亂寄垃圾給我的郵件主機,所以我想要擋掉他;此外,我发现192.168.1.100 电脑使用者都会乱寄垃圾给我的邮件主机,所以我想要挡掉他;
  • 那個 h8h.com 也有問題,我也要擋掉這個網域(domain) 的來源;那个h8h.com 也有问题,我也要挡掉这个网域(domain) 的来源;
  • 更發現有個使用者叫做test@testing.domain.name 也是×××廣告信業者!更发现有个使用者叫做 test@testing.domain.name 也是×××广告信业者!
那麼我可以怎樣設定Sendmail 的存取權限呢?那么我可以怎样设定Sendmail 的存取权限呢?
[root@test root]# vi /etc/mail/access [root@test root]# vi /etc/mail/access
# 預設情況下有啟用的IP #预设情况下有启用的IP
localhost.localdomain          RELAY localhost.localdomain RELAY
localhost                      RELAY localhost RELAY
127.0.0.1                      RELAY 127.0.0.1 RELAY
# 想要開放權限的IP 與網域 #想要开放权限的IP与网域
192.168.0            RELAY 192.168.0 RELAY
140.116.44.125        RELAY 140.116.44.125 RELAY
# 擋掉的IP、主機名稱與E-mail #挡掉的IP、主机名称与E- mail
h8h.com       DISCARD h8h.com DISCARD
192.168.1.100     DISCARD 192.168.1.100 DISCARD
test@testing.domain.name   REJECT test@testing.domain.name REJECT
# 儲存後離開 #储存后离开
[root@test root]# makemap hash /etc/mail/access < /etc/mail/access [root@test root]# makemap hash /etc/mail/access < /etc/mail/access
                     总结:/etc/mail/local-host-names 是用来定义为哪个域名提供邮件服务
                                  /etc/mail/access                    是用来定义为谁提供转发业务
        
                 2.4 dovecot安装
 
                                     2.4.1 [root@mail mail]# yum install dovecot
dovecot瀹夎
                         
                                    2.4.2 编辑dovecot配置文件
                                             [root@mail /]# vi /etc/dovecot.conf
                                             查找,把一下位置修改
                                             
                                           
    
                                   2.4.3  设置启动基本,并设置开机启动
                                               [root@mail /]# chkconfig --list dovecot
                                               [root@mail /]# chkconfig --level 35 dovecot on
                                               [root@mail init.d]# vi /etc/rc.local    添加
                                        
             
                       2.5  openwebmail安装
                                     2.5.1 
yum -y install perl-suidperl perl-Compress-Zlib 
rpm -ivh http://apt.sw.be/redhat/el5/en/i386/dag/RPMS/perl-Text-Iconv-1.4-1.2.el5.rf.i386.rpm
wget  http://openwebmail.org/openwebmail/download/redhat/rpm/release/2.50/openwebmail-2.52-1.i386.rpm
rpm -ivh openwebmail-2.52-1.i386.rpm
rm -rf openwebmail-2.52-1.i386.rpm
                                    注释:地址如有变化,请自行查找最新地址。
                                   
                                        2.5.2  在/var/www/cgi-bin/openwebmail/etc建立一下dbm.conf文件                                              添加内容:
                                                   dbm_ext .db
                                                   dbmopen_ext .db
                                                   dbmopen_haslock no
 
 
                                       2.5.3 初始化OPENWEBMAIL系统
                            [root@mail etc# /var/www/cgibin/openwebmail/openwebmail-tool.pl --init
                                    
 
 
                                      2.5.6 配置openwebmail.conf文件
                               [root@mail ~]# vi /var/www/cgi-bin/openwebmail/etc/openwebmail.conf
                               domainnames             auto改为test.com(就是想要提供服务的域名)
                               default_language      en    改为zh_CN.GB2312
                               default_iconset          Cool3D.English改为Cool3D.Chinese.Simplified
 
                     三 添加用户&验证服务
                                       3.1  添加用户
                                           [root@mail ~]# groupadd mailtest
                                           [root@mail ~]# useradd -g mailtest -s /sbin/nolobin si

                                           [root@mail ~]# passwd si
                                           Changing password for user si.
                                           New UNIX password:
                                           BAD PASSWORD: it is too short
                                          Retype new UNIX password:
                                          passwd: all authentication tokens updated successfully.
                                          
 
                                         3.2  添加邮件组all
                                               [root@mail ~]# vi /etc/aliases
                                               行尾添加      all:si,qi
                                               
                                                重新加载别名数据库
                                                 [root@mail ~]# newaliases
                                                
                                             
                                       3.3 httpd.conf设置

                            [root@mail ~]# vi /etc/httpd/conf/httpd.conf
                           末尾添加
                           Scriptalias /mail             "/var/www/cgi-bin/openwebmail/openwebmail.pl"
                   
                                        3.4 添加开机启动httpd,重启各项服务
                                       
         
                                                /etc/init.d/sendmail start
                                                /etc/rc.d/init.d/saslauthd start
                                               /etc/rc.d/init.d/dovecot start
                                                /etc/rc.d/init.d/httpd start
                                 
                                              重启服务
                                              service httpd restart
                                              service sendmail restart
                                              service saslauthd restart
                                              service dovecot restart
 
                                      
 

                                       3.5    验证!
                                 
                      四.   终于写完了,如果你有什么问题,可以联系我 zq500480@sinacom