企業級開源郵件系統搭建的全過程

原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://xtony.blog.51cto.com/3964396/891140

企業級開源郵件系統搭建的全過程:

前言:此過程爲搭建企業用的郵件系統,在企業裏郵件這種通信是必然存在的。當然可以選擇微軟的Exchange,但現在大部分企業線上跑的系統都是開源的,所以實現這種開源體系的郵件系統也是必然的。

好處:
1.開源,就是意味着免費

2.自由,就是可以隨意利用組件來實現想要的功能

3.方便,就是隨便找臺機器裝個開源的linux就是部署

4.維護需要專門的人員(此爲一點小弊端,不像購買微軟的Exchange,可以買服務)

實現所需組件:Postfix+dovecot+Cyrus SASL+squirrelmail
一、平臺構建

首先就是LAMP平臺的部署,其實除開Mysql是必須的之外,像Apache假如不用webmail的話就不用裝,Php也是爲了支持web頁面的,但在此是爲了搭建個滿足大部分企業的需求,所以都安裝了。以下都是採用的源碼方式安裝,也可直接yum裝。

1.1 Apache的安裝:

  1. #tar -zxf httpd-2.2.9.tar.gz -C /usr/local/src 
  2. #cd /usr/local/src/httpd-2.2.9 
  3. #./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite 
  4. #make 
  5. #make install 

 
1.2 Mysql的安裝:

  1. 首先安裝軟件: 
  2. #useradd -M -s /sbin/nologin mysql 
  3. #tar zxf mysql-5.0.56.tar.gz -C /usr/local/src 
  4. #cd /usr/local/src/mysql-5.0.56 
  5. #./configure --prefix=/usr/local/mysql 
  6. #make 
  7. #make install 
  8. 安裝後配置: 
  9. #cd /usr/local/src/mysql-5.0.56 
  10. #cp support-files/my-medium.cnf /etc/my.cnf           #複製主配文件(中等數據庫規模) 
  11. #/usr/local/mysql/bin/mysql_install_db --user=mysql   #初始化 
  12.  
  13. #chown -R root:mysql /usr/local/mysql 
  14. #chown -R mysql /usr/local/mysql/var 
  15.  
  16. #echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf #添加庫文件路徑 
  17. #ldconfig                                             #刷新庫文件搜索路徑 
  18.  
  19. 啓動 
  20. #/usr/local/mysql/bin/mysqld_safe --user=mysql &      #後臺安全啓動 
  21.  
  22. #cd /usr/local/src/mysql-5.0.56 
  23. #cp support-files/mysql.server /etc/init.d/mysqld     #複製啓動腳本 
  24. #chmod +x /etc/init.d/mysqld 
  25. #chkconfig --add mysqld                               #添加到系統自啓動服務中 
  26. #chkconfig mysqld on 
  27. #echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile #設置系統全局的環境變量 PATH 值,方便使用 Mysql 數據庫命令 

1.3 PHP 軟件 

  1. 安裝軟件: 
  2. #tar jxf php-5.2.6.tar.bz2 -C /usr/local/src 
  3. #cd /usr/local/src/php-5.2.6 
  4. #./configure --prefix=/usr/local/php5 --enable-mbstring \ 
  5. --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql \ 
  6. --with-config-file-path=/usr/local/php5 
  7. #make 
  8. #make test 
  9. #make install 
  10. 安裝後配置: 
  11. #cd /usr/local/src/php-5.2.6 
  12. #cp php.ini-dist /usr/local/php5/php.ini #複製配置文件 
  13.  
  14. #vi /usr/local/apache2/conf/httpd.conf   #修改 Apache 服務的主配置文件 
  15. LoadModule php5_module modules/libphp5.so 確認這行的存在(否則重新編譯安裝apache) 
  16. AddType application/x-httpd-php .php     #添加這行記錄 
  17. DirectoryIndex index.php index.html      #在這行添加關於 php 格式的首頁 

1.4 測試
Apache 測試
#vi /usr/local/apache2/htdocs/test.php

  1. <?php 
  2. phpinfo(); 
  3. ?> 

IE 瀏覽器中輸入網址 http://ip/test.php
看到頁面爲php環境信息表示跟 Apache 服務整合成功!!!
Mysql 測試
#vi /usr/local/apache2/htdocs/testdb.php

  1. <?php 
  2. $link=mysql_connect ('locahost' ,'test',' ' ); 
  3. if (!$link) echo "Fail !!!"; 
  4. else echo "Success !!!"; 
  5. mysql_close( ); 
  6. ?> 

IE 瀏覽器中輸入網址 http://ip/testdb.php
看到“Success!!!”字樣表示跟 Mysql 服務整合成功!!!
 
二、Postfix 軟件安裝

下面是正式關於郵件系統的組件安裝:

2.Postfix(核心組件,提供發信)
2.1 停止系統自帶的 sendmail 軟件
#service sendmail stop
#chkconfig --level 35 sendmail off
2.2 編譯安裝 postfix 軟件

  1. #groupadd -g 1200 postdrop 
  2. #groupadd -g 1000 postfix 
  3. #useradd -M -u 1000 -g postfix -G postdrop -s /sbin/nologin postfix  #不創建宿主目錄附屬組 
  4. 安裝軟件: 
  5. #tar zxf postfix-2.4.6.tar.gz -C /usr/local/src 
  6. #cp postfix-2.4.6-vda-ng.path.gz /usr/local/src  #補丁文件,用以支持虛擬用戶設置配額 
  7. #cd /usr/local/src 
  8. #gunzip postfix-2.4.6-vda-ng.path.gz 
  9. #cd postfix-2.4.6 
  10. #patch -p1 < ..../postfix-2.4.6-vda-ng.patch    #打補丁 
  11. #make makefiles \ 
  12. 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH \ 
  13. -DUSE_CYRUS_SASL -I/usr/include/sasl' \ 
  14. 'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2' 
  15. #make 
  16. #make install 

備註:安裝過程會出現互動提問,直接使用默認設置即可。
 
三、Postfix 相關配置
 
3.1 目錄結構:
/etc/postfix         工作目錄
/usr/libexec/postfix 服務器程序文件
/var/spool/postfix   郵件隊列目錄
                   incoming 剛接收到的郵件
                   active   正在投遞的郵件
                   deferred 以前投遞失敗的郵件
                   hold     被阻止發送的郵件
                   corrupt  不可讀或者不可分析的郵件
/usr/sbin 該目錄下有以下一些管理工具程序
                   postalias 構建、修改、查詢別名表
                   postconf  顯示、編輯 main.cf 配置文件
                   postfix   啓動、停止服務
                   postmap   構造、修改、查詢表
                   postqueue 管理郵件隊列,普通用戶使用
                   postsuper 管理郵件隊列,root 用戶使用
3.2 配置文件:
/etc/postfix/main.cf   是 postfix 服務的配置文件
/etc/postfix/master.cf 是 master 程序的配置文件
命令:#postconf    查看當前 postfix 服務所使用的配置參數
      #postconf -n 查看不同於默認值的配置參數
常規操作:
#postconf -n > main2.cf 只保留與默認值不同的參數,以提高可讀性
#mv main.cf main.cf.bak 將原有配置文件改名備份
#mv main2.cf main.cf
3.3 主配文件修改:
#vi /etc/postfix/main.cf

  1. inet_interfaces = 192.168.4.1,127.0.0.1   #監聽的 ip 地址,默認值爲 all 
  2. myhostname = mail.xt.com                   #主機名 
  3. mydomain = xt.com                          #郵件域名 
  4. myorigin = $mydomain                       #外發郵件時發件人地址中的郵件域名 
  5. mydestination = $mydomain,$myhostname     #可接收的郵件地址中的域名 
  6. home_mailbox = Maildir/                    #郵件存儲位置和格式 
  7. 常用命令: 
  8. #postfix start            #啓動 
  9. #postfix check            #檢查配置 
  10. #postfix stop             #停止 
  11. #postfix reload           #重新加載配置 

3.4 SMTP 發送郵件測試:
郵件本地賬戶管理
#groupadd mailusers 
#useradd -g mailusers -s /sbin/nologin terry
#useradd -g mailusers -s /sbin/nologin shrek
#passwd terry
#passwd shrek                           #新建本機用戶用來發信測試
SMTP 發送郵件測試
#telnet localhost 25
 helo localhost
 mail from: [email protected]
 rcpt to: [email protected]
 data
 subject: this is a test mail.
 test
 .               #點表示結束,併發送
查看收到的郵件
cat /home/shrek/Maildir/new/518957843753285739.mail.xt.com  #ID爲自動生成

四、Dovecot 郵局軟件 (提供 pop3 / imap4 協議)  

  1. 4.1 安裝軟件: 
  2. #useradd -M -s /sbin/nologin dovecot            #保證安全性,可不給shell環境 
  3. #tar zxf dovecot-1.1.4.tar.gz -C /usr/local/src 
  4. #cd /usr/local/src/dovecot-1.1.4 
  5. #./configure --sysconfdir=/etc --with-mysql 
  6. #make 
  7. #make install 
  8. 4.2 安裝後配置: 
  9. #cp /etc/dovecot-example.conf /etc/dovecot.conf #複製產生主配文件 
  10. #vi /etc/dovecot.conf 
  11. ssl_disable = yes                  #禁用 SSL 機制 
  12. protocols = pop3 imap              #指定郵局協議 
  13. disable_plaintext_auth = no        #允許明文密碼認證 
  14. mail_location = maildir:~/Maildir  #設置郵件存儲格式和位置 
  15.  
  16. #vi /etc/pam.d/dovecot 創建 pam 認證文件 
  17. auth required   pam_nologin.so 
  18. auth include    system-auth 
  19. account include system-auth 
  20. session include system-auth 
  21.  
  22. #/usr/local/sbin/dovecot -c /etc/dovecot.conf #啓動 
  23.  
  24. 4.3 POP3 郵件接收測試 
  25. #telnet localhost 110   #110爲pop方式收信端口 
  26.  user shrek             #使用shrek身份認證 
  27.  pass 123pwd            #密碼 
  28.  list                   #列出信件列表 
  29.  retr 1                 #讀取編號1的信件 

 
五、Webmail 軟件(不是必須的,可爲用戶提供web頁面收發郵件)
5.1 squirrelmail 安裝:#這裏用的外國的一個小軟件,也可以用國內做的比較好的webmail,如:extmail等

  1. #tar jxf squirrelmail-1.4.13.tar.bz2 -C /usr/local/apache2/htdocs 
  2. #cd /usr/local/apache2/htdocs/ 
  3. #mv squirrelmail-1.4.13 webmail 
  4. #cd webmail 
  5. #tar -jxf zh_CH-1.4.13.tar.gz -C /usr/local/apache2/htdocs/webmail 解壓漢化軟件 
  6.   
  7. 5.2 配置 
  8. #cd /usr/local/apache2/htdocs/webmail 
  9. #mkdir -p attach data 
  10. #chown -R daemon:daemon attach/ data/ 
  11. #chmod 730 attach/ 
  12. #cp config/config_default.php config/config.php 
  13. 創建配置文件 
  14. #vi config/config.php 
  15. $squirrelmail_default_language = 'zh_CN';#改成中文集 
  16. $default_charset = 'zh_CN.UTF-8';              
  17. $domain = 'xt.com'; 
  18. $smtpServerAddress = 'localhost';        #設置發信服務器地址 
  19. $smtpPort = 25;                          #設置發信服務器端口 
  20. $imap_server_type = 'dovecot';           #設置收信服務器軟件 
  21. $imapPort = 143;                         #設置收信服務器端口 
  22. $data_dir = '/usr/local/apache2/htdocs/webmail/data/ '; 
  23. $attachment_dir = '/usr/local/apache2/htdocs/webmail/attach/ '; 
  24. #/usr/local/apache2/bin/apachectl restart 重啓 apache 服務 

客戶端 IE 地址欄中輸入 http://mail.xt.com/webmail
即可看見登錄界面,登錄進去即可正常收發郵件:

六、SMTP 用戶認證(現在大部分郵箱都要求smtp認證,防止冒充別人發送郵件)
6.1 所需軟件
cyrus-sasl-plain
cyrus-sasl-devel
cyrus-sasl-lib
syrus-sasl         #RHEL5默認安裝

6.2 設置 Cyrus SASL 函數庫
#cp /usr/lib/sasl2/Sendmail.conf /usr/lib/sasl2/smtpd.conf
#vi /usr/lib/sasl2/smtpd.conf
pwcheck_method: saslauthd
#service saslauthd start
#chkconfig --level 35 saslauthd on

6.3 修改 postfix 服務主配置文件
#vim /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes              #啓用SMTP認證
smtpd_sasl_security_options = noanonymous #禁用匿名登錄
mynetworks = 127.0.0.1
smtpd_recipient_resrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destionation
解釋:設置收件人地址過濾規則從上到下逐一匹配,符合即停止
      允許ip爲mynetworks的客戶使用本郵件系統投遞郵件
      允許通過SMTP認證的用戶向外發送郵件
      當收件人地址不包括在postfix的授權網絡內時拒絕發送該郵件
6.4 SMTP 發信認證測試
#printf "shrek" |openssl base64              #生成加密字符串
c2hyZWS
#printf "123pwd" |openssl  base64
MTIzcXdI
#telnet mail.xt.com 25
 auth login      #認證登錄
 c2hyZWS         #加密後的用戶名
 MTIzcXdI        #加密後的密碼
 mail from: [email protected]
 rept to: [email protected]
 data
 subject: test
 this is a test mail!
 .                                            #以點表示結束
 
7. 郵件羣發設置
#vi /etc/postfix/main.cf
alias_maps = bash:/etc/aliases
#vi /etc/aliases
teacher:shrek,terry
#newaliases
此時發給 [email protected] 的郵件會羣發給 [email protected] 和[email protected]

8. 設置郵件大小
默認提供了 10M 的郵件大小
#vi /etc/postfix/main.cf

  1. message_size_limit = 20971520    #設置爲 20M 郵件大小 
  2.                                  #該設置對於系統用戶和虛擬用戶都生效 
  3. 限制郵箱大小的參數和方法: 
  4. mailbox_size_limit               #針對 Mailbox 郵件存儲方式的情況,默認限制爲 50M 
  5.                                  #只對系統用戶生效 
  6. virtual_mailbox_limit            #針對虛擬用戶,默認限制 50M 
  7.                                  #安裝 VDA 補丁後,可以對使用 Mailbox 或 Maildir 存儲方式的用戶生效 
  8. quota                            #磁盤配額,針對 Linux 系統賬戶 
  9.                                  #對 Mailbox 和 Maildir 存儲方式的用戶都生效 

好了,就先到這裏了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章