2012年10月3日 星期三

CentOS 6.3 + dovecot + postfix + SquirrelMail

起因:
目前公司mail架構為 freebsd + postfix +openwebmail (mailbox)
mailbox的最大缺點就是在於鎖定的問題,隨著公司人數上升,問題的發生率就越來越頻繁
對客服單位(信件量大、即時處理)發生的機率更大。
於是幫客服部門另外架設一台備份、線上查詢用的mail server
這台mail server改用maildir的架構,將每封信單獨成一個檔案存放,雖然效能下降,但是能有效解決lock的問題。

環境:
由於機器的raid驅動問題,freebsd在安裝時便無法抓到硬碟,freebsd官方的硬體支援列表也沒列出該raid晶片(要裝也是可以,不過太費工了),故改用CentOS
搭配套件:
dovecot(imap、pop3)
postfix (smtp)
SquirrelMail  (webmail)
httpd (apache)
php

安裝方式:
一切以最簡單的yum安裝

  1. 安裝dovecot

    • yum install dovecot

    • 修改設定檔
      vi /etc/dovecot/dovecot.conf

      將protocols設為imap
      protocols = imap

    • 修改mail存放位置
      vi /etc/dovecot/conf.d/10-mail.conf

      mail_location = maildir:~/Maildir
       
    • 修改認證
      vi /etc/dovecot/conf.d/10-auth.conf
      disable_plaintext_auth = no
       
  2. postfix (系統內建,centos安裝時要選擇 basic server)
    • vi /etc/postfix/main.cf
    • inet_interfaces = localhost 這行前面加上 #號註解
       
    • 設定domain、host
      myhostname = (自行帶入)
      mydomain =
      (自行帶入)
     
  3. 安裝httpd、php(不贅述)
     
  4. 安裝SquirrelMail
    SquirrelMail目前在centos6.3的yum上面找不到,
    於是我到http://rpmfind.net/尋找
    找到 squirrelmail-1.4.8-5.el5.centos.13.noarch.rpm

    • 抓取rpm
      wget ftp://rpmfind.net/linux/centos/5.8/updates/x86_64/RPMS/squirrelmail-1.4.8-5.el5.centos.13.noarch.rpm

    • 安裝
      rpm -i squirrelmail-1.4.8-5.el5.centos.13.noarch.rpm
      如果有跳出有相依性套件,再依說明安裝所需套件

    • 環境設定
      cd /usr/share/squirrelmail/config/

      ./conf.pl

      進入設定介面 

      D
      輸入 dovecot
       
    • 設定語系,選 10
      squirrelmail_default_language = 'zh_TW';
      default_charset       = 'big5';

       
    • 其他的設定很明確,進去看一看就知道怎麼用了,基本上不用改,故不贅述。

    • 存檔 S,退出 Q
      
    • 新增change passwd plugins
      到官方網站:http://squirrelmail.org/plugin_view.php?id=117 下載適合的版本。
      (依照squirrelmail對應版本下載,筆者squirrelmail為1.4.8-5,可選擇Version 4.0,Requires: SquirrelMail 1.2.8, Compatibility plugin 1.3

      cd /usr/share/squirrelmail/plugins
       
      wget http://www.squirrelmail.org/plugins/change_passwd-4.0-1.2.8.tar.gz
       
      tar -zxvf change_passwd-4.0-1.2.8.tar.gz
       
      cd /usr/share/squirrelmail/config
       
      ./conf.pl
      
      # 選 8.  Plugins -> 將 Available Plugins: 內的 change_passwd 加入模組 -> 選 S 儲存設定 -> 選 Q 後離開
       
    • 安裝 Compatibility plugin 1.3 SquirrelMail 官方plugins下載)官方網站:http://squirrelmail.org/plugin_view.php?id=152找1.3版
      cd /usr/share/squirrelmail/plugins/
        
      wget http://www.squirrelmail.org/plugins/compatibility-1.3.tar.gz
        
      tar -zxvf compatibility-1.3.tar.gz
       
      cd /usr/share/squirrelmail/config
       
      ./conf.pl
      
      # 選 8.  Plugins -> 將 Available Plugins: 內的 Compatibility 加入模組 
      
      
    • 安裝 vacation(auto reply)套件
      官方網站:http://squirrelmail.org/plugin_view.php?id=172
      Requires: SquirrelMail 0.5 or above
      (需求說明的部份,官方網頁上漏掉2個需求。1.ftp server (直接yum安裝vsftp,不贅述)  2.vacation 程式)

      cd /usr/share/squirrelmail/plugins/
       
      wget http://www.squirrelmail.org/plugins/autorespond-0.5.1-1.4.tar.gz
       
      tar -zxvf autorespond-0.5.1-1.4.tar.gz 
       
      cd /usr/share/squirrelmail/config
       
      ./conf.pl
      
      # 選 8.  Plugins -> 將 Available Plugins: 內的 autorespond 加入模組 
      
      
    • 安裝 vacation 程式
      官方網站:http://www.csamuel.org/software/vacation
      直接抓最新版的來裝(目前為1.2.7.1)

      cd /tmp

      wget http://downloads.sourceforge.net/project/vacation/vacation/1.2.7.1/vacation-1.2.7.1.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fvacation%2Ffiles%2Fvacation%2F1.2.7.1%2F&ts=1351066441&use_mirror=nchc

      tar -zxvf vacation-1.2.7.1.tar.gz

      cd vacation-1.2.7.1

      make


      執行make後會產生執行檔 vacation

      cp vacation /usr/bin




設定開機自動啟動:
chkconfig dovecot on
chkconfig httpd on
或是
ntsysv
進入services選擇
webmail網址:http://{host IP}/webmail

一開始登入時遇到
ERROR
Error connecting to IMAP server: localhost.
13 : Permission denied
這個錯誤訊息,找了老半天找不出結果,maillog也沒有紀錄,最後查到
setsebool httpd_can_network_connect=1
直接下這行就可解決。

檢測config狀況,可以瞭解SquirrelMail 哪邊出狀況
http://{host IP}/webmail/src/configtest.php

最後,我把seLinux關閉,他給我不少困擾....
vi /etc/selinux/config
SELINUX=disabled



reboot



參考:
http://blog.pmail.idv.tw/?p=363
http://www.wretch.cc/blog/jerry0822/13870081
http://www.fedoraforum.org/forum/archive/index.php/t-59291.html
http://www.ichiayi.com/wiki/tech/poppassd


更新日誌:
20121024
  • 更新change passwd模組安裝說明。原使用的模組需另外安裝poppassd server,但poppassd遇到密碼中有空白字元時會造成判斷錯誤。
  • 新增vacation(auto reply)安裝方式。


2 則留言:

  1. 發現poppassd有個問題,如果密碼有空白,將會發生錯誤。
    這個問題很鳥....

    回覆刪除
  2. 補充說明,改用 vacation 後,可允許空白密碼

    另外,由於需使用到ftp功能,但又不想要讓外部存取,故可以在ftp限制只有本機可連入ftp

    回覆刪除