LINUX下的Mail服務器的搭建


電子郵件是因特網上最為流行的應用之一。如同郵遞員分發投遞傳統郵件一樣,電子郵件也是異步的,也就是說人們是在方便的時候發送和閱讀郵件的,無須預先與別人協同。與傳統郵件不同的是,電子郵件既迅速,又易於分發,而且成本低廉。另外,現代的電子郵件消息可以包含超鏈接、HTML格式文本、圖像、聲音甚至視頻數據。

首先我們的Mail服務器是建立在LAMP的基礎上的,所以我們先要搭建一下我們的LAMP環境。

我們用到的軟件有: httpd-2.2.9.tar.gz ,mysql-5.0.56.tar.gz ,php-5.2.6.tar.bz2 。

下面我們開始配置環境

1. # tar -zxvf httpd-2.2.9.tar.gz -C /usr/src/

   # cd /usr/src/httpd-2.2.9/

   # ./configure --prefix=/usr/local/apache2 

   --enable-so --enable-rewrite --enable-ssl --with-ssl=/usr/lib --enable-auth-digest 

   --enable-cgi --enable-suexec --with-suexec-caller=daemon --with-suexec-docroot        =/usr/local/apache2/htdocs  && make && make install(編譯安裝)

  # service httpd stop

  # chkconfig --level 2345 httpd off

  # cd /usr/local/apache2/bin/

  # ./apachectl start

  # ./apachectl restart

  # lsof -i:80

 2. 編譯安裝mysql並進行配置

  # tar -zxvf mysql-5.0.56.tar.gz -C /usr/src/

  # cd /usr/src/mysql-5.0.56/

  # useradd -M -s /sbin/nologin mysql     # 添加一個mysql的非登陸用戶

  # ./configure --prefix=/usr/local/mysql && make && make install      # 編譯安裝

  # cd support-files

  # cp my-medium.cnf /etc/my.cnf  #建立配置文件

  # cd /usr/local/mysql

  # ./mysql_install_db --user=mysql

  # chown -R root.mysql /usr/local/mysql/   # 修改所屬組

  # chown -R mysql /usr/local/mysql/var/

  # cd /usr/local/mysql/bin

  # ./mysqld_safe --user=mysql &

  # ./mysql                              # 啟動mysql 

3. 安裝PHP軟件,並進行配置。

  # tar -jxvf /mnt/Linux-server/LNS-SG5/php-5.2.6.tar.bz2 -C .

  # cd php-5.2.6/323  

  # ./configure --prefix=/usr/local/php5 --enable-mbstring --with-   apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/ 

  --with-config-file-path=/usr/local/php5 && make && make install

  # cp  /usr/src/php/php.ini-dist   /usr/local/php5/php.ini 

  # vim /usr/local/apache2/conf/httpd.conf 添加以下兩行

    AddType application/x-httpd-php .php  添加

    DirectoryIndex index.php index.html 修改

 # cd /usr/local/apache2/bin

  # ./apachectl restart   #  啟動

至此我們的LAMP環境就搭建完成了。我們開始搭建我們的mail服務器。

 

4.郵件傳輸代理(MTA) Postfix 2.5.3 使用最新版本2.5.3 數據庫/目錄服務 MySQL 5.0  可選openLDAP或NetScape LDAP,本文以MySQL為藍本,郵件投遞代理(MDA) maildrop 2.0.x 支持過濾和強大功能 Web帳戶管理后台 ExtMan 0.2.5 支持無限域名、無限用戶 POP3 服務器 Courier-IMAP 對於大部分企業而言完全足夠.WebMail 系統 ExtMail 1.1 支持多語言、全部模板化,功能基本齊全 SMTP認證庫 Cyrus SASL  標准的SASL實現庫,可以支持Courier authlib 

其他數據認證庫 Courier Authlib 0.60 authlib是maildrop, courier-imap等服務的關鍵部件 

日志分析及顯示 mailgraph_ext 在ExtMan中已經包含了. Web 服務器 Apache 2.x OS 自帶 .

我們開始安裝postfix

首先我們需要停掉sendmail,然后安裝這幾個必備的包,可能你的在裝機時已經裝上了。然后通過yum 安裝postfix ,這里我們已經裝過了。執行postconf -m 我們查看一下它是否支持mysql驗證。好了,我們的第一步就算完成了。

5. 接下來我們開始修改postfix的配置文件:

除了圖上的兩處還有

inet_interfaces = all   115行

mynetworks = 192.168.0.0/24, 127.0.0.0/8   262行

然后我們重啟postfix.

6. 配置好postfix 之后我們來安裝authlib,使用authlib登陸驗證.這樣可以不用管后台用戶數據是用什么方式存儲的.比方說MySQL/LDAP

7. 安裝完畢后我們需要修改以下配置文件。

8  . 修改Mysql支持的相關配置文件

   #  vim /etc/authlib/authmysqlrc 

   MYSQL_SERVERlocalhost     26行

   MYSQL_USERNAMEextmail

   MYSQL_PASSWORDextmail

   MYSQL_SOCKET/var/lib/mysql/mysql.sock

   MYSQL_PORT3306

   MYSQL_DATABASEextmail

   MYSQL_USER_TABLEmailbox

   MYSQL_CRYPT_PWFIELDpassword

   MYSQL_UID_FIELDuidnumber

   MYSQL_GID_FIELDgidnumber

   MYSQL_LOGIN_FIELDusername

   MYSQL_HOME_FIELDconcat('/var/mailbox/',homedir)用戶家目錄的絕對路徑

   MYSQL_MAILDIR_FIELDconcat('/var/mailbox/',maildir)

重新啟動courier-authlib, 並創建郵箱目錄

  # service courier-authlib start 

  # mkdir /var/mailbox

9. 安裝courier-imap 屏蔽IMAP服務

 # yum install courier-imap 

ExtMail目前還沒有正式支持IMAP目錄,因此需要屏蔽IMAP,只提供pop3服務。而就目前的使用情況來看,IMAP使用的非常少,絕大部分OutLook/Foxmail用戶都習慣使用POP3而非IMAP。

  # vim /usr/lib/courier-imap/etc/imapd 

   IMAPDSTART=NO

  # vim /usr/lib/courier-imap/etc/imapd-ssl 

   IMAPDSSLSTART=NO 

重新啟動courier-imap

  # service courier-imap start 

10. 安裝maildrop

maildrop是一個使用C++編寫的用來代替本地MDA的帶有過濾功能郵件投遞代理,是courier郵件系統組件之一,我們在此將使用maildrop來代替postfix自帶的MDA。

  # yum install maildrop 

為了使Postfix支持Maildrop,必須修改/etc/postfix/master.cf文件:

  # vim /etc/postfix/master.cf

  63 maildrop   unix        -       n        n        -        -        pipe

  64   flags=DRhu user=vuser argv=maildrop -w 90 -d ${user}@${nexthop} ${recipient}   ${user} ${extension} {nexthop}

注意上面一行前面要有2個空格,否則啟動失敗

配置main.cf 由於maildrop不支持一次接收多個收件人,因此必須在main.cf里增加如下參數:

  maildrop_destination_recipient_limit = 1

 

  # maildrop -v   測試

  檢查安裝結果,請確保有"Courier Authentication Library extension enabled."一句出現:

maildrop RPM包安裝時,會自動創建vuser用戶及vgroup用戶組,專門用於郵件的存 儲, vuser:vgroup的uid/gid都是1000

修改郵箱目錄屬性:

chown vuser.vgroup /var/mailbox -R

11. 安裝cyrus-sasl         ========用戶登錄驗證

  # yum install cyrus-sasl                          官網:wiki.extmail.org

開啟postfix的smtp認證

  # vim /etc/postfix/main.cf

  smtpd_sasl_auth_enable = yes

   smtpd_recipient_restrictions=permit_sasl_authenticated,reject_unauth_destination

讓postfix支持虛擬用戶

   virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

   virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf

   virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

   virtual_transport = maildrop

   # local_recipient_maps = (注釋去掉)  209行

編輯smtpd.conf文件,   讓虛擬用戶到mysql數據庫認證

  # vim /usr/lib64/sasl2/smtpd.conf 

   pwcheck_method: authdaemond

   log_level: 3

   mech_list: PLAIN LOGIN

   authdaemond_path:/var/spool/authdaemon/socket

修改authdaemon socket目錄權限 

如果該目錄權限不正確修改,maildrop及postfix等將無法正確獲取用戶的信息及密碼認證:

   # chmod -R 777 /var/spool/authdaemon/

   # service saslauthd start

12. 安裝ExtMail和extman       ======安裝web界面 MUA 

   # yum install extsuite-webmail 

   # cd /var/www/extsuite/extmail

   # cp webmail.cf.default webmail.cf

   # vim webmail.cf 

語言選項,可改作:

   SYS_USER_LANG = zh_CN        77行

此處即為您在前文所設置的用戶郵件的存放目錄,可改作:

   SYS_MAILDIR_BASE = /var/mailbox/    127行

   SYS_MYSQL_USER = extmail            139+行

   SYS_MYSQL_PASS = extmail

   SYS_MYSQL_DB = extmail

   # chown -R vuser.vgroup /var/www/extsuite/extmail/cgi/  # 修改所屬組和所有者

  # yum install extsuite-webman 

   # vim /var/www/extsuite/extman/webman.cf

此處即為您在前文所設置的用戶郵件的存放目錄,可改作:

   12  SYS_MAILDIR_BASE = /var/mailbox

   21  SYS_CAPTCHA_ON = 0   //不需要認證碼

   # mkdir /tmp/extman

   # chown vuser.vgroup /tmp/extman

設置虛擬域和虛擬用戶的配置文件

   # cp /var/www/extsuite/extman/docs/mysql_virtual_*.cf /etc/postfix/

   # chown -R vuser.vgroup /var/www/extsuite/extman/cgi/

導入mysql數據庫結構及初始化數據

  # cd /var/www/extsuite/extman/docs

  # mysql -u root -p <extmail.sql

  # mysql -u root -p <init.sql

測試authlib認證:

    # /usr/sbin/authtest -s login postmaster@extmail.org extmail 

    Authentication succeeded.

   Authenticated: postmaster@extmail.org  (uid 1000, gid 1000)

    Home Directory: /var/mailbox/extmail.org/postmaster

           Maildir: /var/mailbox/extmail.org/postmaster/Maildir/

             Quota: (none)

    Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0

    Cleartext Password: extmail

           Options: (none)

這樣表明ExtMan的正確安裝,數據庫也正確導入,courier-authlib能正確連接到mysql數據庫 

修改httpd.conf文件

   NameVirtualHost *:80

   <VirtualHost *:80>

   ServerName mail.lx.com

   DocumentRoot /var/www/extsuite/extmail/html/

   ScriptAlias /extmail/cgi/ /var/www/extsuite/extmail/cgi/

   Alias /extmail /var/www/extsuite/extmail/html/

   ScriptAlias /extman/cgi/ /var/www/extsuite/extman/cgi/

   Alias /extman /var/www/extsuite/extman/html/

  SuexecUserGroup vuser vgroup

   </VirtualHost>

 # service httpd restart

13. 訪問及測試 http://mail.lx.com/extman

選擇管理即可登入extman進行后台管理了。默認管理帳號為:root@extmail.org

密碼為:extmail*123*

登錄成功后創建虛擬域和虛擬用戶

使用telnet登錄25和110端口進行測試

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM