<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Dict.CN 在線詞典, 英語學習, 在線翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統計

    留言簿(23)

    積分與排名

    優秀學習網站

    友情連接

    閱讀排行榜

    評論排行榜

    開放原代碼的 Qmail+Mysql+Jsp 中文電子郵局系統說明

    開放原代碼的 Qmail+Mysql+Jsp 中文電子郵局系統說明
    2005-08-24 10:00 am
    作者:linux寶庫 (http://www.linuxmine.com)
    來自:linux寶庫 (http://www.linuxmine.com)
    聯系:linuxmine#gmail.com

    前面介紹了兩個國外的程序, 現在介紹一個我正在改進的系統給大家.

    系統也是建立在 qmail + mysql 基礎上的, WEB 部分用 JSP JAVA
    , 包括有 WEB 管理功能. 我感覺這個系統很適合中小企業的網站使用,
    般萬人以內肯定都沒什么問題, 我花了時間修復了很多系統中存在的 BUG,
    目的是想發布一個可以投入正式使用的版本給大家, 當然界面美工不是我的拿
    手本事, 這個只有大家自己去做了, 但是基本功能我盡量做到沒有問題.

    先提供文檔給大家參考, 我個人網站已經在使用了大家可以去看一下地址是:
    http://www.fastirc.com/mail/
    user: test
    pass: test

    ################################################################

    下面是一點關于 JeticMail 的說明

    首先感謝 D. J. Bernstein 完成的 qmail-1.03 checkpassword-0.9

    JeticMail
    最先由風云和青山兩位華源前輩完成, 架構在 www.gbsource.com
    上穩定運行了八個月. 隨后由 Capitain (mail:hyzd5@263.net 負責 Java 程序)
    dennis (mail: zuestc@263.net 系統配置) 加以改進, 增加了 POP3
    信功能, 并做了部分優化.

    JeticMail
    底層使用 qmail-1.03 來做郵件服務器, 風云在其基礎上做了部
    分改動, 入了對 mysql 的支持. 同時在 checkpassword-0.9 也加入了
    mysql
    支持. 前端使用 jsp 來完成 webmail. 這個系統沿襲了 qmail 獨特
    的油箱格式 Maildir, 為了更好的服務于 webmail /mail/path/Maildir
    下采用了五個子目錄, 分別是 dsb, rev, snt, src, tmp, 分別是垃圾箱,
    收信箱, 發件箱, 草稿箱, 臨時.

    為了給 GNU 事業做一份貢獻, 為了大家更好的學習和參考, 他們 opensource
    了這個郵件系統, 并且取名為 JeticMail.

    ################################################################

    我對 JeticMail 的改進說明

    由于華源網絡的倒閉這個項目沒有能夠繼續發展下去, 我對此感到非常的可惜,
    畢竟國內這樣實用的好程序真的太少了. 但是自從華源網絡公布這個郵件系統
    以后, 到目前為止真正安裝配置成功的用戶實在太少了, 我覺得這是由多方面
    的因素造成的, 首先也是最關鍵的一點就是這個系統自帶的說明文檔太少和太
    簡陋了, 其實這也是許多 GPL 項目的一個特點. 其次是原代碼和自帶的某些配
    置文件還有腳本中存在許多的小錯誤, 造成了很多用戶遇到無法編譯或者無法
    連接數據庫或者無法調用 JAVA servlet 的問題. 再次是許多安裝使用此系統
    的朋友是一些 UNIX 新手對 UNIX qmail 以及 mysql jdk 并不是很了解,
    于是安裝過程中會走許多的彎路以至最后無法正常使用這個系統.

    因為希望這樣的好程序可以有更多的朋友一起使用和改進, 并充分發揚 GPL
    神我編寫了這份安裝說明文檔, 并修正了到目前為止我所發現的所有程序和腳本
    以及配置文件中的錯誤, 我將這個程序重新打包提供給需要的朋友使用, 希望
    對大家的學習和生活有所幫助.

    到目前為止我除了編寫這個說明外所做的工作如下:

    1,
    qmail-1.03-jeticmail 的核心程序做了調整, 增加了 smtp 發信認證功
    , 同時打了兩個官方網站推薦的補丁.
    qmail-smtpd.c
    來源 http://www.cuni.cz/~vhor/qmail/smtpauth-en.html
    這個補丁要比很多文章中說的 http://www.nimh.org/ 上的好許多, 并且增
    加了 auth login 的系統日志, 這樣你可以查到那些用戶通過 smtp auth
    對外發信. 我在它的基礎上做了對 mysql 的支持.
    官方網站推薦補丁來源 http://www.qmail.org/top.html#patches
    現在關于 qmail 的補丁很多, 但是我建議大家不是官方推薦使用的補丁最好
    不要使用, 否則難以確保安全和穩定性能.

    2,
    修正了 qmail-1.03-jeticmail checkpassword-0.9-jeticmail 在某些環
    境下無法編譯通過的問題.

    3,
    升級原來的 ucspi-tcp-0.84.tar.gz 到最新的 ucspi-tcp-0.88.tar.gz .

    4,
    修正作者提供的 resin.conf 配置文件中的一個錯誤.

    5,
    修正 getAttachment.java 中存在的錯誤.

    6,
    修正了當來信的原始信息中時間為空值時無法通過 WEBMAIL 收取郵件的問題.

    7,
    修正了在 WEBMAIL 中發送電子郵件時無法通過地址本導入郵件地址的問題.

    8,
    對一些 JSP 文件中頁面部分的小錯誤做了一些修改和調整.

    做了以上修改后系統基本可以運行投入正式使用了, 當然還是存在許多小錯誤的
    我會在以后繼續改進, 另外在爭得作者同意后我會考慮和大家一起繼續發展這個
    項目, 推出新的版本增加更多的功能.

    ################################################################

    JeticMail
    安裝說明

    doc
    目錄下是一些說明, 主要是作者自己編寫的程序的使用說明.
    jsp
    目錄下存放的是 WEBMAIL servlet .
    lib
    目錄下是使用 WEBMAIL 所需要的 JAVA CLASS .
    soft
    目錄下的東西大家一定知道是什么我就不再介紹了.
    old
    目錄下是當初作者自己發布的那個安裝包.

    我在 RedHat 6.2 7.3 下安裝了 JeticMail 都可以正常使用. 其他系統
    我沒有做嚴格測試, 這個工作將在以后繼續進行.

    jsp soft 目錄下的所有東西傳到服務器上, 并且上傳 mysql jdk
    的安裝包到你的服務器上. mysql 建議使用 3.22.X 或者 3.23.X 因為其它
    版本我還沒有測試, jdk 我測試的是 1.2.2 1.3.1 版本, 最新的 1.4.X
    我沒有測試過. resin 我使用的是 1.2.10 原作者使用過 1.2.3 1.2.5
    更高的版本我沒有用過. 我有朋友在 TOMCAT 下也運行成功了這個系統,
    過需要調整的配置可能比較多, 有時間我會寫出 TOMCAT 下的配置說明.

    注意: 上傳文本文件要用 ASCII 方式, 上傳二進制文件要用 BIN 方式.

    下面是安裝示例, 您可以根據實際情況有所變動.

    注意: 我是按照下面方法配置的, 如果你有所改動的話需要在相應的配置文件
    和程序以及數據庫結構中做一些調整才能正常運行.
    在安裝前大家必須首先關閉目前正在使用的郵件系統, 包括 SMTP 以及
    POP3
    服務, 如果你本來裝的是 qmail 建議將本來的系統刪除, 并且需
    要刪除本來安裝 qmail 時增加的所有用戶和組.

    ################################################################

    /htdocs/jeticmail
    為你的 jsp 站點根目錄.
    /home/mail
    為你的郵件系統用戶目錄的根目錄.
    /home/mail/attachment
    為臨時保存上傳附件的目錄.
    /usr/local/mysql
    mysql 目錄.
    /usr/local/resin
    resin 目錄.
    /usr/local/jdk
    jdk 目錄.
    /var/qmail
    qmail 目錄.

    ################################################################

    0. # mkdir /htdocs
    # mkdir /home/mail
    # mkdir /home/mail/attachment
    # chmod -R 777 /home/mail
    # cp mysql-3.22.X.tar.gz /usr/local/src/
    # cp jdk-1_2_2_X-linux-i386.tar.gz /usr/local/src/
    # cp qmail-1.03-jeticmail.tar.gz /usr/local/src/
    # cp checkpassword-0.9-jeticmail.tar.gz /usr/local/src/
    # cp ucspi-tcp-0.88.tar.gz /usr/local/src/
    # cp resin-1.2.10.tar.gz /usr/local/src/
    # cp -Rf jsp /usr/local/src/
    # cd /usr/local/src/
    # tar -xzvf mysql-3.22.X.tar.gz
    # tar -xzvf jdk-1_2_2_X-linux-i386.tar.gz
    # tar -xzvf resin-1.2.10.tar.gz

    1.
    安裝 mysql 數據庫軟件.

    # cd /usr/local/src/mysql-3.22.X
    # ./configure --prefix=/usr/local/mysql
    # make
    # make install
    # cd /usr/local/mysql/bin
    # ./mysql_db_install
    # cp ../share/mysql/mysql.server ./
    # chmod 711 mysql.server
    # ./mysql.server start (
    啟動 mysql 數據庫)
    # cd /etc/rc.d
    # vi rc.local

    在最后一行添加: /usr/local/mysql/bin/mysql.server start (系統啟動時自動啟動 mysql 數據庫)

    # cd init.d
    # vi killall

    在最后一行添加: /usr/local/mysql/bin/mysql.server stop (系統關閉時自動關閉 mysql 數據庫)

    # vi /etc/profile

    增加路徑, PATH 行尾加上: /usr/local/mysql/bin:/usr/local/bin ":" 間隔.

    # ./mysqladmin -u root password ....

    設置你的 mysql 管理員密鑰.

    # mysql -u root -p -h localhost

    系統會提示輸入密碼輸入你剛設置好的密碼就可以進入 mysql 字符管理截面.

    # mysql> grant all privileges on *.* to root@127.0.0.1 identified by 'your_password';

    這一步操作一定不能少, 目的是在 mysql 中建立一個 root@127.0.0.1 的用戶, 這個用戶擁有對
    所有數據庫的操作權限, 但是不具備開設其他用戶的權限. 因為 JDBC 驅動只接受 uid@127.0.0.1
    這樣的方式連接數據庫而不接受 uid@localhost 所以你必須增加這樣的一個數據庫用戶.

    以上操作完成后在 mysql 中建立 jeticmail 數據庫, 并將 jeticmail.sql 的內容導入到該數據庫中.

    注意: mysql 3.23.X 需要使用 mysql 用戶來安裝, 如果你使用這個版本的 mysql 請先在你的系統中
    添加 mysql 用戶, 并將 mysql 安裝到的目錄的所有權給 mysql 用戶, 我這里就不具體介紹了.

    2.
    安裝 jdk 環境.

    # cd /usr/local/src
    # mv jdk1.2.2 /usr/local/jdk
    # ln -s /usr/local/jdk/jre /usr/local/jre
    # vi /etc/profile (
    設置你的環境變量)
    PATH 行尾加上: /usr/local/jdk/bin
    加入以下幾行:
    CLASSPATH=/usr/local/jdk/lib/tools.jar:/usr/local/jdk/lib:/usr/local/jdk/jre/lib:./:/usr/local/jdk/lib/tomcatjsp.jar:/usr/local/jdk/lib/mm.mysql-2.0.7-bin.jar:/usr/local/jdk/lib/jsdk23.jar
    export CLASSPATH
    JAVA_HOME=/usr/local/jdk
    export JAVA_HOME
    保存該文件后推出系統從新登陸以獲得新的環境變量并將本軟件包中 lib 目錄下的所有文件復制到
    /usr/local/jdk/lib
    目錄下, 然后你需要 login out 一下重新登陸系統, 這樣你設置的全局環境
    變量才能起效.

    注意: Redhat 7.x 開始以及其他一些 *nix 系統采用了 glibc 2.2.x 的庫環境, 在使用這個版本的
    庫環境下 jdk1.2.2 無法正常使用, 你必須安裝 jdk1.3.1 或更高版本.

    3.
    安裝 qmail 郵件傳輸代理程序.

    # cd /usr/local/src/
    # tar -xzvf qmail-1.03-jeticmail.tar.gz
    # cd qmail-1.03
    # vi Makefile

    編輯 Makefile 文件修改其中的一行:
    mysql 3.23.X 系統中:
    MYSQL_LIBS=/usr/local/mysql/lib/mysql/libmysqlclient.a -lm -lz
    mysql 3.22.X 系統中:
    MYSQL_LIBS=/usr/local/mysql/lib/mysql/libmysqlclient.a -lm

    注意: Makefile 文件中的 MYSQL_LIBS MYSQL_INCLUDE 路徑可能由于安裝 mysql 的方式不同會不一樣
    你需要根據自己的實際情況做調整.

    # ./install.sh yourdomainname
    # mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
    # mv /usr/lib/sendmail /usr/lib/sendmail.bak
    # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
    # ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
    # cp /var/qmail/boot/proc /var/qmail/rc
    # vi /var/qmail/rc

    將其內容改為:

    #!/bin/sh
    exec env - PATH="/var/qmail/bin:$PATH" \
    qmail-start ./Maildir/ splogger qmail

    # cd /usr/local/src/
    # tar -xzvf ucspi-tcp-0.88.tar.gz
    # cd ucspi-tcp-0.88
    # make
    # make setup check
    # cd ..
    # vi tcp.smtp

    內容如下:

    127.0.0.1:allow,RELAYCLIENT=""
    :allow

    # cp tcp.smtp /etc
    # cd /etc
    # /usr/local/bin/tcprules tcp.smtp.cdb tcp.smtp.tmp < /etc/tcp.smtp
    # cd /usr/local/src/
    # tar -xzvf checkpassword-0.9-jeticmail.tar.gz
    # cd checkpassword-0.9
    # vi Makefile

    編輯 Makefile 文件修改其中的一行:
    mysql 3.23.X 系統中:
    MYSQL_LIBS=/usr/local/mysql/lib/mysql/libmysqlclient.a -lm -lz
    mysql 3.22.X 系統中:
    MYSQL_LIBS=/usr/local/mysql/lib/mysql/libmysqlclient.a -lm

    注意: Makefile 文件中的 MYSQL_LIBS MYSQL_INCLUDE 路徑可能由于安裝 mysql 的方式不同會不一樣
    你需要根據自己的實際情況做調整.

    # make
    # make setup check
    # chmod 4755 /var/qmail/bin/checkpassword

    /var/qmail/control 里寫一個文件 sqlserver 文件內容為:

    server localhost
    port 3306
    login root
    password yourpassword
    db jeticmail

    注釋:
    server Mysql
    服務器的名字
    port Mysql
    端口
    login
    登陸 Mysql 的用戶名
    password
    登陸 Mysql 的密碼
    db
    數據庫的名字

    如果郵件到: user1@domain1, qmail-mysql 將在 mbox_host id 字段.

    # vi /bin/smtp

    SMTP
    啟動腳本內容如下:

    #!/bin/sh
    /usr/local/bin/tcpserver -H -R -l 0 -t 1 -c 200 -x /etc/tcp.smtp.cdb -u 444 -g 444 0 smtp /var/qmail/bin/qmail-smtpd /var/qmail/bin/checkpassword /bin/true 2>&1 | /var/qmail/bin/splogger smtpd 3 &

    # vi /bin/pop3

    POP3
    啟動腳本內容如下:

    #!/bin/sh
    /usr/local/bin/tcpserver -c 200 -v 0 pop3 /var/qmail/bin/qmail-popup yourdomainname /var/qmail/bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir &

    POP3
    啟動腳本你需要查看一下你的 /etc/services 文件, 如果其中指定的是 pop-3 那么腳本里
    也要修改成 pop-3 . 另外以上兩個腳本除了 #!/bin/sh 其它部分都要寫在一行里.

    # csh -cf '/var/qmail/rc &' (
    啟動 qmail 后臺程序)
    # /bin/smtp (
    啟動 smtp)
    # /bin/pop3 (
    啟動 pop3)

    4.
    安裝 resin-1.2.10 (jsp 服務器).

    # mv /usr/local/src/resin-1.2.10 /usr/local/resin
    # export RESIN_HOME=/usr/local/resin/
    # cp /usr/local/src/resin.conf /usr/local/resin/conf/ (
    或者$RESIN_HOME/conf/)

    注意: 請使用我配置好的 resin 的配置文件 resin.conf 如果你要自己優化配置, 請注意要取消
    <multipart-form/>
    這個項, 否則不能上傳附件.

    5.
    安裝 jeticmail (安裝前端 jsp 界面).

    # cp /usr/local/src/jsp /htdocs/jeticmail

    這個命令的意思是把本軟件包里的 jsp 目錄下面的所有文件和子目錄全部復制到 /htdocs/jeticmail .

    注意: jsp 連接 mysql 的驅動已經打包在了 lib 目錄的 mm.mysql-2.0.7-bin.jar 中所以不需要另外安裝了.
    我對代碼分析和實際檢驗后發現目前的 WEBMAIL 可以使用的最高版本 mysql jdbc 驅動就是這個, 如果
    你需要升級 mysql jdbc 驅動那你可能需要對 WEBMAIL 部分的代碼自己做一些修改和調整才能運行.

    6.
    配置 jeticmail.

    修改: /htdocs/jeticmail/WEB-INF/jeticmail.properties
    配置好你的連接數據庫用戶密碼等......

    # /usr/local/resin/bin/httpd.sh start (
    啟動 resin 服務器)

    7.
    訪問 jeticmail.

    啟動 resin 后就可以通過 http://yourdomainname:8080 訪問 jeticmail .
    系統管理員界面地址是 http://yourdomainname:8080/admin/
    初始系統管理員帳號: admin
    初始系統管理員密碼: 123456

    你可以在 mysql jeticmail 數據庫中的 admin 表中修改這個密碼, 對應字段是 password
    但是你必須使用 mysql 自帶的 password 函數生成這個密碼, 一個簡單的處理辦法是你可以
    先在 WEBMAIL 中注冊一個用戶輸入, 當這個用戶密碼生效后, 你可以查看數據庫將產生的密碼
    復制到 admin 表相應的地方.

    8.
    測試.

    本地Mail測試:

    % echo to: me | /var/qmail/bin/qmail-inject
    注意: 要用你的用戶名代替 me
    Mail
    應該立即出現在你的信箱之中 ./var/log/maillog 中應該有如下記錄:
    qmail: new msg 53
    qmail: info msg 53: bytes 246 from <me@domain> qp 20345 uid
    666
    qmail: starting delivery 1: msg 53 to local me@domain
    qmail: status: local 1/10 remote 0/20
    qmail: delivery 1: success: did_1+0+0/
    qmail: status: local 0/10 remote 0/20
    qmail: end msg 53

    給一個不存在的本地用戶發信:
    %echo to: nonexistent | /var/qmail/bin/qmail-inject
    qmail: new msg 53
    qmail: info msg 53: bytes 246 from <me@domain> qp 20351 uid
    666
    qmail: starting delivery 2: msg 53 to local
    nonexistent@domain
    qmail: status: local 1/10 remote 0/20
    qmail: delivery 2: failure: No_such_address.__#5.1.1_/
    qmail: status: local 0/10 remote 0/20
    qmail: bounce msg 53 qp 20357
    qmail: end msg 53
    qmail: new msg 54
    qmail: info msg 54: bytes 743 from <> qp 20357 uid 666
    qmail: starting delivery 3: msg 54 to local me@domain
    qmail: status: local 1/10 remote 0/20
    qmail: delivery 3: success: did_1+0+0/
    qmail: status: local 0/10 remote 0/20
    qmail: end msg 54

    遠程投遞測試:
    向你在其他機器上的賬戶發信:
    % echo to: me@wherever | /var/qmail/bin/qmail-inject
    qmail: new msg 53
    qmail: info msg 53: bytes 246 from <me@domain> qp 20372 uid
    666
    qmail: starting delivery 4: msg 53 to remote me@wherever
    qmail: status: local 0/10 remote 1/20
    qmail: delivery 4: success: 1.2.3.4_accepted_message./...
    qmail: status: local 0/10 remote 0/20
    qmail: end msg 53
    投遞過程將在 starting delivery success 中有個間斷, SMTP 傳送是相對較慢的.

    然后去檢查一下 me@wherever 是否正確收到 email.

    后面還有三個測試, 分別測試本地 postmaster, 兩次彈回 mail 和通過 mail 執行.
    命令. 具體方法可以在 TEST.deliver 中找到.

    SMTP Server
    測試, me 是你的用戶, domain 是你的機器名.
    % telnet 127.0.0.1 25
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    220 domain ESMTP
    helo dude
    250 domain
    mail <me@domain>
    250 ok
    rcpt <me@domain>
    250 ok
    data
    354 go ahead
    Subject: testing

    This is a test.
    .
    250 ok 812345679 qp 12345
    quit

    測試一下 mysql 的版本:
    shell # ./qmail-getpw user1 somewhere.com
    user1123456778/somewhere/username
    反回了用戶的 id, uid, gid, home 字段的內容
    如果不能找到改用戶, 則返回 'qmail alias'
    例如:
    shell # ./qmail-getpw u1 a
    alias7065534/var/qmail/alias-u1
    如果你啟動 mysqld 時加了 --log 選項, 可以看 mysql log 文件

    9. jeticmail
    調試.

    因為我們的 jeticmail 系統是基于 qmail-1.03 , 所以請參考 qmail man, 會受益非淺.
    java
    jsp 方面的問題請參考 resin 的日志, 或者在前臺運行 resin 或者 tomcat, 查看
    java
    的拋出異常. 因為增加了 smtp 發信認證你需要在你的郵件客戶端軟件中做相應的設置才
    可以使用 smtp 對外發信, 當然通過瀏覽器進入郵件系統, 在任何地方都可正常收發電子郵件.

    ################################################################

    以上就是我的安裝過程, 我正在自己個人網站 http://www.fastirc.com/mail/
    使用這個系統有問題的朋友可以發我 EMAIL: webmaster@fastirc.com
    另外需要一起交流討論郵件系統的朋友可以加我的 QQ: 8273949

    ################################################################

    目前還有兩個 WEBMAIL 部分的 BUG 我在修復, 大家也可以看看我以上的說明
    那里寫的不夠好和完善的, 我在最終發布這個版本前修改好!

     

    posted on 2006-03-02 13:46 都市淘沙者 閱讀(740) 評論(0)  編輯  收藏 所屬分類: Linux/OpenVPN/Python

    主站蜘蛛池模板: 国内精品免费在线观看| 日韩免费一级毛片| 亚洲午夜福利在线视频| 亚洲 国产 图片| 日本视频在线观看永久免费| 国产亚洲精aa在线看| 国产亚洲美女精品久久久| 久久WWW免费人成一看片| 亚洲精品无码永久在线观看男男 | 国产免费高清69式视频在线观看| 亚洲AV无码久久寂寞少妇| 好男人视频在线观看免费看片| 精品免费久久久久国产一区| 亚洲Av高清一区二区三区| 久久精品国产亚洲Aⅴ香蕉 | 嫖丰满老熟妇AAAA片免费看| 免费又黄又爽又猛大片午夜 | 亚洲经典千人经典日产| 亚洲av无码乱码国产精品| 四虎影视精品永久免费| 曰批视频免费40分钟试看天天| 免费手机在线看片| 国产色在线|亚洲| 亚洲福利视频导航| 亚洲人成电影在线播放| 成年人网站在线免费观看| 免费国产叼嘿视频大全网站| 国产精品亚洲一区二区三区在线观看| 噜噜噜亚洲色成人网站∨| 国产AV无码专区亚洲AV漫画| 成人黄页网站免费观看大全| 99热在线免费观看| 99热在线日韩精品免费| 老外毛片免费视频播放| 国产成人亚洲综合一区| 亚洲黄色免费网站| 亚洲Av综合色区无码专区桃色 | 国产亚洲av片在线观看16女人| 国产精品无码素人福利免费| 99无码人妻一区二区三区免费| 国产精品99久久免费观看|