歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> hordeimpWebmail的安裝與設置詳細分析

hordeimpWebmail的安裝與設置詳細分析

日期:2017/3/6 15:50:20   编辑:關於Unix
一. 郵件系統的基本原理 首先讓我們來了解一下電子郵件系統的基本原理。這裡只做一個簡單介紹,詳細的可參考有關書籍。 一般情況下,我們把電子郵件程序分解成用戶代理,傳輸代理和投遞代理。 用戶代理將用戶的信件傳送至傳輸代理(如Outlook Express、FoxM
  一. 郵件系統的基本原理
  首先讓我們來了解一下電子郵件系統的基本原理。這裡只做一個簡單介紹,詳細的可參考有關書籍。
  一般情況下,我們把電子郵件程序分解成用戶代理,傳輸代理和投遞代理。 用戶代理將用戶的信件傳送至傳輸代理(如Outlook Express、FoxMail等)。郵件傳輸代理負責將郵件送到目標主機(如sendmail)。而投遞代理則從信件傳輸代理取得信件傳送至最終用戶的郵箱(如procmail)。
  我們來模擬一封郵件從發出到收到的過程。用戶使用Outlook Express(用戶代理或叫做郵件客戶端)向Sendmail(傳輸代理)請求發送電子郵件的服務,將郵件交給Sendmail。Sendmail根據郵件的目的地址,將郵件發送給郵件接收服務器,郵件接收服務器將郵件緩存(這也是Sendmail的工作)。接收郵件的用戶用Outlook Express向郵件接收服務器發出取信的請求,郵件接收服務器將郵件發送給用戶(這是IMAP或POP服務的工作)。至此,一封郵件從發送者的機器到達接收者的機器。
  我們要建立的郵件服務器,以性能優越的RedHat Linux 7.3為操作系統。以Sendmail作郵件傳輸服務,IMAP作收信服務來構成郵件系統的基本框架。以Horde Imp作為郵件的Web客戶端。剩下的就是Horde Imp的支持軟件:以MySQL存儲用戶數據,以Apache+PHP作為Web服務器。我們還使用其它的模塊來擴充本系統的功能:通訊錄模塊和修改密碼模塊。
  我們將安裝下列軟件:
  1. RedHat linux7.3
  作用:操作系統
  下載地址: http://freesoft.online.sh.cn:8888/mirrors/redhat/7.3/
  2. Sendmail-8.11.6
  作用:郵件傳輸和接收
  下載地址:(RedHat linux7.3自帶)
  3. Imap
  作用:IMAP和POP3服務器
  下載地址:ftp://ftp.cac.washington.edu/imap/imap-2001a.tar.Z
  4. Apache-1.3.24
  作用:Web服務器
  下載地址:http://freesoft.online.sh.cn:8888/mirrors/ftp.apache.org/httpd/apache_1.3.24.tar.gz
  5. PHP-4.2.1
  作用:CGI腳本語言
  下載地址:http://www.php.net/do_download.php?download_file=php-4.2.1.tar.gz
  6. PEAR-4.1.0
  作用:PHP的功能擴展模塊
  下載地址:ftp://ftp.horde.org/pub/horde/tarballs/pear-4.1.0.tar.gz
  7. MySql
  作用:數據庫,存儲郵件用戶數據和通訊錄
  下載地址:http://freesoft.online.sh.cn:8888/mirrors/Database/MySQL/mysql-3.23.49.tar.gz
  8. Horde-2.1
  作用:Imp的支持模塊
  下載地址:ftp://ftp.horde.org/pub/horde/tarballs/horde-2.1.tar.gz
  補丁:ftp://ftp.horde.org/pub/horde/tarballs/patch-horde-2.0-2.1.gz
  9. Imp-3.1
  作用:Web mail的核心程序
  下載地址:ftp://ftp.horde.org/pub/imp/tarballs/imp-3.1.tar.gz
  補丁:ftp://ftp.horde.org/pub/imp/tarballs/patch-imp-3.0-3.1.gz
  10.Turba-1.1
  作用:提供通訊錄功能的模塊
  下載地址:ftp://ftp.horde.org/pub/turba/tarballs/turba-1.1.tar.gz
  補丁:ftp://ftp.horde.org/pub/turba/tarballs/patch-turba-1.0-1.1.gz
  11.Poppassd-1.8.2
  作用:修改密碼的服務,與Passwd for imp結合提供Web方式修改用戶密碼的功能。
  下載地址:http://echelon.pl/pubs/poppassd-1.8.2.tar.gz
  12.Passwd for imp
  作用:提供修改密碼功能的模塊
  下載地址:https://mail.ph.utexas.edu/test2/patches/public/passwd/passwd.tgz
  
  二. 需要的網絡環境
  本文假設用戶希望在園區網中架設一個電子郵件服務器,為本單位用戶提供郵件服務。該服務器擁有一個合法的IP地址202.99.11.200和一個合法的域名mail.example.com,並且example.com的DNS的MX記錄指向mail.example.com。
  注:為了滿足域名需求,example.com的DNS的域數據文件應該包含以下內容:
  IN MX 10 mail
  mail IN A 202.99.11.200
  
  三. 安裝操作系統RedHat Linux7.3
  RedHat Linux7.3的安裝在很多資料中已有詳細說明。這裡只說一下分區的問題,作為一個郵件系統,主要的磁盤空間用於存儲用戶的郵件。我們把大部分軟件安裝在/usr,而用戶收到的郵件存儲在/var,用戶處理(刪除、移動等)後的郵件存儲在/home。大家要根據自己的情況確定合理的分區方案。
  
  四. 安裝Sendmail
  其實上,RedHat Linux7.3安裝完成後,Sendmail就被安裝了。如果沒有,可從RedHat Linux7.3的第一張安裝盤中用RPM包進行安裝。接下來我們只對Sendmail進行一些簡單的設置。
  Sendmail的配置文件主要是/etc/sendmail.cf。這裡,我們需要修改兩個地方:
  原內容: Cwlocalhost (大約在83行)
  修改為: Cwexample.com
  作用:定義郵件交換的域
  原內容:O deamonPortoptions=Port=smtp,Addr=127.0.0.1 … (大約在260行)
  修改為:(將此行注釋掉)
  作用:此行的作用是只允從本機使用smtp服務,作為一個郵件系統,這顯然是不行的。
  修改完成後,鍵入:
  #/etc/rc.d/init.d/sendmail restart
  重啟sendmail,使修改生效。
  
  五. 安裝IMAP
  IMAP提供IMAP及POP3兩種服務,它們的作用都是提供用戶收取信件的接口,這裡我們只使用IMAP服務。
  我們假設所有要安裝的軟件都已經下載到/tmp。本文涉及的命令都以root身份執行。
  1.解壓,安裝:
  # cd /tmp
  # tar zxvf imap-2001a.tar.Z
  # cd imap-2001a
  # make slx
  
  2.將生成的可執行文件拷貝到/usr/sbin
  #cp imapd/imapd /usr/sbin
  
  3.在/ect/xinetd.d下新建文件imap
  #vi /etc/xinetd.d/imap
  內容為:
  # IMAP server at Port 143
  service imap
  {
   disable = no
   socket_type = stream
  wait = no
  user = root
  server = /usr/sbin/imapd
  }
  
  4.重啟xinetd
  /ect/rc.d/init.d/xinetd restart
  
  5.測試imap服務起來沒有
  #telnet localhost 143
  如果看到歡迎信息,則說明IMAP服務器安裝成功。注意,先不要刪除IMAP的安裝文件,我們在後面還會用到。
  
  六. 安裝Web mail支持——Apache、Mysql和PHP
  這一步,我們要為Imp建立Web服務器及數據庫支持。
  1. 安裝MySql
  Web mail Imp將用戶設置和通訊錄存儲在數據庫中,我們選用常用的MySql。
  1.1解壓,配置編譯、安裝:
  # cd /tmp
  # tar zxvf mysql-3.23.47.tar.gz
  # cd mysql-3.23.47
  # ./configure --prefix=/usr/local/mysql
  # make
  # make install
  完成後MySql被安裝到/usr/local/mysql。
  1.2建立用戶mysql及組mysql
  #groupadd mysql
  #useradd mysql
  #passwd mysql
  1.3把MySql啟動起來:
  #cd /usr/local/mysql/bin
  # ./mysql_install_db (安裝MySql的基本數據庫)
  # ./safe_mysqld –uroot & (啟動MySql並轉入後台)
  1.4測試MySql
  # ./mysql
  如果能連接數據庫,則MySql安裝完成。請注意修改MySql的root密碼,以增加安全性。其它操作請參照有關資料。
  2. 安裝Apache、PHP及PEAR
  Horde及Imp 是以PHP編寫的,要使它能夠運行,必須提供Web服務和PHP腳本語言支持,而PEAR是PHP的功能擴展模塊,雖然PHP默認安裝時已經安裝了PEAR,但Horde需要較新的版本。
  2.1解壓:
  # cd /tmp
  # tar zxvf apache-1.3.24.tar.gz
  # tar zxvf php-4.2.1.tar.gz
  2.2預編譯Apache
  # cd apache-1.3.24
  # ./configure
  2.3配置、編譯、安裝PHP,根據imp的需要,加上相應的參數,可參照相關資料進行修改
  # cd ../php-4.2.1
  # ./configure --with-mysql=/usr/local/mysql --with-apache=../apache-1.3.24 --with-imap=../imap2001a --with-gettext --with-xml
  # make
  # make install
  
  2.4配置、編譯、安裝Apache
  # cd ../apache-1.3.24
  # ./configure -- prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a
  
  2.5拷貝PHP配置文件到/usr/local/lib
  # cd ../php-4.2.1
  # cp php.ini-recommended /usr/local/lib
  
  2.6用新版本的PEAR替換舊版本
  # cd /usr/local/lib
  # mv php php.bak
  # cp /tmp/ pear-4.1.0.tar.gz .
  # tar zxvf pear-4.1.0.tar.gz
  # mv pear-4.1.0 php
  # chown root.root –R php
  
  2.7針對PHP修改Apaceh配置文件/usr/local/apache/conf/http.conf
  找到如下兩行:
  # AddType application/x-httpd-php .php
  # AddType application/x-httpd-php-source .phps
  將注釋符去掉,這兩行的作用是定義php文檔的後綴。
  還要修改默認的首頁類型,找到:
  DirectoryIndex index.htm
  改成:
  DirectoryIndex index.htm index.php default.htm default.php
  
  2.8啟動Apache
  # /usr/local/apache/bin/apachectl start
  
  2.9測試Apache和PHP
  刪除/usr/local/apache/htdocs/下所有文件
  # cd /usr/local/apache/htdocs/
  # rm –rf *
  新建文件test.php,內容為:
  <? phpinfo(); ?>
  找一台能上網的機器,在浏覽器地址欄中輸入:http://mail.example.com/test.php,如果能看到PHP的有關信息,則說明Apache及PHP安裝成功。
  
  七. 安裝Web mail
  Imp 是http://horde.org/發布的。它是以PHP編寫的一個功能完善的Web界面的郵件客戶端程序。它用IMAP或POP3協議連接郵件服務器,完成郵件系統的各種功能。更值得一提的是它支持多種語言界面,包括簡體中文。
  Horde是http://horde.org/發布的Horde Application Framework(應用程序框架),http://horde.org/所發布的所有程序都要以Horde為基礎,Imp也不例外。我們首先安裝Horde。
  1. 安裝Horde
  1.1拷貝Horde壓縮包到Web服務器的根目錄並解壓
  # cd /usr/local/apache/htdocs
  # cp /tmp/horde-2.1.tar.gz .
  # tar zxvf horde-2.1.tar.gz
  # mv horde-2.1 horde
  
  應用補丁:
  # cd horde
  # cp /tmp/patch-horde-2.0-2.1.gz .
  # gunzip patch-horde-2.0-2.1.gz
  # patch –p1 <patch-horde-2.0-2.1 -t
  1.2為Horde 和Imp准備數據庫
  確定MySql在運行,我們將在MySql中建立Horde和Imp所需的數據庫。利用Horde中一個SQL腳本文件自動完成這項工作,在進行之前,要修改數據庫用戶的密碼。
  # cd horde/scripts/db
  # vi mysql_create.sql
  找到如下內容:
  REPLACE INTO user (host, user, password)
    VALUES (
      'localhost',
      'horde',
   -- IMPORTANT: Change this password!
      password('horde') // 用戶密碼
    );
  將斜體部分的內容改成自己的密碼,這裡假設被改成“xxx”。
  建立數據庫:
  # /usr/local/mysql/bin/mysql < mysql_create.sql
  注:如果你為Mysql的root設置了密碼,則在上述命令中就要提供密碼。
  如果成功,則在MySql中建立了名為horde的數據庫,此數據庫的所有者是horde,密碼是“xxx”。
  用下面的命令測試數據庫是否成功建立:
  # mysql -h localhost -u horde -pxxx
  mysql>exit
  1.3設置Horde
  Horde和Imp的設置存儲在它們的配置文件中。
  拷貝配置文件:
  # cd horde/config
  # for foo in *.dist; do cp -v $foo `basename $foo .dist`; done
  編輯下列文件:
  1.3.1 Horde的設置文件horde.php
  // 以IMAP作為登錄認證
  $conf['auth']['driver'] = 'imap';
  $conf['auth']['params'] = array();
  $conf['auth']['params']['dsn'] = '{localhost/imap:143}INBOX';
  
  // 使用MySql存儲用戶資料
  $conf['prefs']['driver'] = 'sql';
  $conf['prefs']['params'] = array();
  $conf['prefs']['params']['phptype'] = 'mysql';
  $conf['prefs']['params']['hostspec'] = 'localhost'; // 數據庫服務器
  $conf['prefs']['params']['username'] = 'horde'; // 數據庫用戶
  $conf['prefs']['params']['password'] = 'xxx'; // 建立數據庫時設置的密碼
  $conf['prefs']['params']['database'] = 'horde'; // 數據庫
  $conf['prefs']['params']['table'] = 'horde_prefs'; // 表
  
  // 使用Sendmail發送郵件
  $conf['mailer']['type'] = 'sendmail';
  
  1.3.2 語言設置文件lang.php
  $nls['defaults']['language'] = 'zh_CN'; // 默認語言設成簡體中文
  
  1.4 測試Horde
  找一台能上網的機器,在浏覽器地址欄中輸入:http://mail.example.com/horde/test.php,如果正常的話,將會看到 Horde的相關信息,如果發現錯誤,請檢查前面的操作。特別注意當刷新此頁面時,session測試部分的值應該會自動加1,如果沒有,說明Apache或Horde的session設置不正確,這將導致不能登錄到Web mail系統。
  2. 安裝Imp
  2.1拷貝Imp壓縮包到horde目錄下,解壓:
  # cd /usr/local/apache/htdocs/horde/
  # cp /tmp/imp-3.1.tar.gz .
  # tar zxvf imp-3.1.tar.gz
  # mv imp-3.1 imp
  
  應用補丁
  # cd imp
  # cp /tmp/patch-imp-3.0-3.1.gz .
  # gunzip patch-imp-3.0-3.1.gz
  # patch –p1 < patch-imp-3.0-3.1 -t
  
  2.2 為Imp設置Horde,使Imp運行於Horde之下。
  編輯Horde配置文件horde/config/registry.php
  // 取消下列行的注釋
  $this->registry['auth']['login'] = 'imp'; // 以Imp作為登錄和退出的界面
  $this->registry['auth']['logout'] = 'imp';
  
  //取消下列行的注釋並做修改,這是在Horde中注冊Imp
  $this->applications['imp'] = array(
    'fileroot' => dirname(__FILE__) . '/../imp',
    'webroot' => $this->applications['horde']['webroot'] . '/imp',
    'icon' => '/horde/imp/graphics/imp.gif',
    'name' => _("返回郵件"), // 出現在鏈接上文字
    'allow_guests' => false,
    'show' => true
  );
  
  2.3 設置Imp配置文件
  # cd horde/imp/config
  # for foo in *.dist; do cp -v $foo `basename $foo .dist`; done
  
  編輯下列文件:
  2.3.1 連接服務器配置文件servers.php
  // 修改下列行
  $servers['imap'] = array(
    'name' => 'IMAP Server',
    'server' => 'localhost', // IMAP服務器地址
    'protocol' => 'imap', // 協議
    'port' => 143, // 端口
    'folders' => 'mail/', // 文件夾
    'namespace' => ',
    'maildomain' => 'example.com', // 域名
    'smtphost' => 'mail.example.com', // 郵件服務器
    'realm' => ',
    'preferred' => 'true'
  );
  
  2.3.2 用戶配置文件pref.php,設定用戶的默認設置
  //以下設置供參考,可根據自己的情況修改
  // 用戶使用的語言
  $_prefs['language'] = array(
    'value' => 'zh_CN', // 默認的語言為簡體中文
    'locked' => false, // 是否允許用戶修改缺省值,false為允許
    'shared' => true,
    'type' => 'select',
    'desc' => _("Select your preferred language:")
  );
  
  // 用戶文件夾設置,這些文件夾將建立在用戶目錄下
  $_prefs['folders'] = array(
    'value' => 'mail/',
    'locked' => true,
    'shared' => false,
    'type' => 'text',
    'desc' => _("Path to your mail folders:")
  );
  
  // 收件夾,這不能修改
  $_prefs['mailbox'] = array(
    'value' => 'INBOX',
    'locked' => true,
    'shared' => false,
    'type' => 'implicit'
  );
  
  // 發件夾
  $_prefs['sent_mail_folder'] = array(
    'value' => 'Sent',
    'locked' => false,
    'shared' => true,
    'type' => 'implicit'
  );
  
  // 垃圾箱
  $_prefs['trash_folder'] = array(
    'value' => 'Trash',
    'locked' => false,
    'shared' => false,
    'type' => 'implicit'
  );
  
  以上設置為基本設置,其它設置可根據實際情況修改
  3. 測試Imp
  找一台能上網的機器,在浏覽器地址欄中輸入:http://mail.example.com/horde/imp,以系統用戶登錄,試著發送郵件給其它服務器,給本服務器的其它用戶,從其它服務器發送郵件到本服務器等。如果有問題,查看前面的步驟,確定問題所在。
  
  八. 安裝通訊錄模塊
  通訊錄的功能由horde發布的另一個軟件Turba來完成,在Horde的統一管理下,它能與Imp很好的結合成一個整體。
  1.拷貝Turba到horde目錄並解壓:
  # cd /usr/local/apache/htdocs/horde
  # cp /tmp/turba-1.1.tar.gz .
  # tar zxvf turba-1.1.tar.gz
  # mv turba-1.1 turba
  應用補丁
  # cd turba
  # cp /tmp/patch-turba-1.0-1.1.gz .
  # gunzip patch-turba-1.0-1.1.gz
  # patch –p1 < patch-turba-1.0-1.1 -t
  2.為Turba設置Horde和Imp,使Turba運行在Horde之下
  2.1在Horde中注冊Turba ,編輯文件horde/config/registry.php
  // 取消下列行的注釋並修改,這是Horde中注冊Turba
  $this->applications['turba'] = array(
    'fileroot' => dirname(__FILE__) . '/../turba',
    'webroot' => $this->applications['horde']['webroot'] . '/turba',
    'icon' => '/horde/turba/graphics/turba.gif',
     'name' => _("通訊錄"), // 出現在鏈接中的文字
    'allow_guests' => false,
     'show' => true
  );
  
  2.2 在Imp中鏈接Turba,編輯文件horde/imp/config/conf.php
  $conf['menu']['apps'] = array('turba');
  
  3.配置Turba
  # cd horde/turba/config
  # for foo in *.dist; do cp -v $foo `basename $foo .dist`; done
  
  3.1編輯文件horde/turba/config/conf.php,在Turba中鏈接Imp
  $conf['menu']['apps'] = array('imp');
  
  3.2編輯文件horde/turba/config/prefs.php
  // 設置Turba的語言
  $_prefs['language'] = array(
    'value' => 'zh_CN', // 簡體中文
    'locked' => true,
    'shared' => true,
    'type' => 'select',
    'desc' => _("Select your preferred language:")
  );
  
  3.3 為Turba准備數據庫,利用Turba提供的SQL腳本自動完成
  # cd /horde/turba/scripts/drivers/
  # /usr/local/mysql/bin/mysql < turba.sql
  
  3.4 設置Turba使用MySQL存儲通訊錄數據
  編輯文件horde/turba/config/sources.php
  // 修改下列行
  $cfgSources['localsql'] = array(
    'title' => 'IMP Address Book',
    'type' => 'sql',
    'params' => array(
      'phptype' => 'mysql',
      'hostspec' => 'localhost', // 數據庫服務器
      'username' => 'horde', // 用戶名
      'password' => 'xxx', // 前面設置的密碼
      'database' => 'horde', // 數據庫
      'options' => ',
      'tty' => ',
      'port' => '5432',
      'protocol' => 'unix',
      'table' => 'turba_objects' // 表
    ),
  
  4.測試Turba
  登錄到Imp單擊“通訊錄”進入,測試增加、刪除聯系人等是否正常。
  
  九. 安裝修改密碼模塊
  修改密碼的功能由Horde的一個非官方的模塊Passwd for Imp完成。它通過向poppassd服務提交請求來完成修改密碼的功能。
  1. 安裝Poppassd
  1.1安裝Poppassd
  # cd /tmp
  # tar zxvf poppassd-1.8.1.tar.gz
  # cd poppassd-1.8.1
  # make
  # make install
  1.2設置xinetd,創建文件/etc/xinetd.d/poppassd
  # default: off
  # The POPPASSD port 106.
  service poppassd
  {
      disable = no
      socket_type = stream
      wait = no
      user = root
      server = /usr/sbin/poppassd
      log_on_suclearcase/" target="_blank" >ccess += USERID
      log_on_failure += USERID
  }
  重新啟動xinetd
  # /etc/rc.d/init.d/xinetd restart
  1.3測試poppassd
  # telnet localhost 106
  如果看到歡迎信息,則poppassd成功安裝
  
  2. 安裝Passwd for Imp
  2.1拷貝Passwd for Imp到horde目錄
  # cd /usr/local/apache/htdocs/horde/
  # cp /tmp/passwd.tgz .
  # tar zxvf passwd.tgz
  
  2.2配置Horde和Imp使Passwd工作在Horde之下
  編輯文件horde/config/registry.php,增加以下內容:
  // 在Horde中注冊passwd
  $this->applications['passwd'] = array(
    'fileroot' => dirname(__FILE__) . '/../passwd',
    'webroot' => $this->applications['horde']['webroot'] . '/passwd',
    'icon' => $this->applications['horde']['webroot'] .
           '/passwd/graphics/lock.gif',
    'name' => _("修改密碼"), // 出現在鏈接上的文字
    'allow_guests' => false,
    'show' => true
  );
  
  在Imp中鏈接Passwd,編輯文件horde/imp/config/conf.php
  $conf['menu']['apps'] = array('turba', 'passwd');
  
  2.3配置passwd
  # cd horde/passwd/config
  # for foo in *.dist; do cp -v $foo `basename $foo .dist`; done
  
  編輯文件horde/passwd/config/prefs.php
  // 語言設置 事先要准備中文語言包
  $_prefs['language'] = array(
    'value' => 'zh_CN',
    'locked' => false,
    'shared' => true,
    'type' => 'select',
    'desc' => _("Select your preferred language:")
  );
  
  //在Passwd中鏈接Imp
  $conf['menu']['apps'] = array('imp');
  3. 測試修改密碼功能
  登錄到Imp,進入修改密碼模塊,看看能否正常修改密碼。
  至此,一個郵件系統成功建立了。接下來的問題就是修改Horde Imp的配置文件來完善她,如自定義起始頁,加上本公司標志等。

Copyright © Linux教程網 All Rights Reserved