欧美日韩精品在线,国内精品久久久久久久久,一级毛片恃级毛片直播,清纯唯美亚洲综合欧美色

基于FreeBSD操作系統(tǒng)的安全電子郵件系統(tǒng)架設(shè)_Mail服務(wù)器教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!
Qmail是世界上安裝使用量僅次于Linux/Unix上缺省使用的Sendmail的郵件服務(wù)器軟件。Qmail配置較Sendmail簡單,而且速度較之要快,所以在本郵件系統(tǒng)的架設(shè)過程中我選擇了Qmail作為郵件服務(wù)器的核心。

一個(gè)郵件服務(wù)器主要包括三個(gè)主要的功能,郵件傳輸代理MTA(Mail Transport Agent)、郵件分發(fā)代理MDA(Mail Delevery Agent)和郵件用戶代理MUA(Mail User Agent)。Qmail軟件包實(shí)現(xiàn)了這三個(gè)基本的功能,之所以說其只實(shí)現(xiàn)了郵件服務(wù)器的基本功能是因?yàn)樗鼪]有實(shí)現(xiàn)很多郵件服務(wù)器需要的功能,這些功能有些是安全和防止垃圾郵件方面,比如SMTP驗(yàn)證、APOP功能、Relay控制功能和對(duì)使用者IP地址的限定等等,還有一些擴(kuò)展的功能象Webmail功能、虛擬域、基于數(shù)據(jù)庫的用戶管理、郵件列表、自動(dòng)轉(zhuǎn)發(fā)它也不能提供。

好在現(xiàn)在Qmail流行開來,有了不少自由軟件聯(lián)盟來為Qmail添磚加瓦,這些人們自發(fā)組織起來的聯(lián)盟開發(fā)了能夠補(bǔ)償Qmail不足的一些補(bǔ)丁。這些軟件補(bǔ)丁主要包括:

Ucspi-tcp-0.88 (tcpsever服務(wù)程序,提供對(duì)IP地址限定功能)
Checkpassword-0.81 (把/etc/passwd的用戶和密碼作為POP3的用戶和密碼進(jìn)行驗(yàn)證)
Ezmlm-0.53(支持郵件列表功能)
vpopmail-5.2.2(這個(gè)重要,提供虛擬域和數(shù)據(jù)庫支持)
Qmailadmin-0.35 (虛擬域的web管理工具)
Autorespond-1.0.0 (自動(dòng)回復(fù)程序,Ezmlm需要)
Sqwebmail-1.2.0 webmail (一個(gè)CGI的Webmail系統(tǒng))
Vqsignup-0.4 (提供web方式的用戶郵箱注冊)
qmail-smtpd-auth-0.26 (提供SMTP認(rèn)證功能)
cmd5checkpw-0.22 (提供認(rèn)證加密算法)

因?yàn)榘惭b期間涉及的軟件眾多,如果不能搞清楚各個(gè)軟件在郵件服務(wù)器中所起到的作用將會(huì)感到滿頭霧水。基本的Qmail系統(tǒng)和整個(gè)郵件系統(tǒng)的架構(gòu)如圖1和圖2所示:



圖1 Qmail基本功能結(jié)構(gòu)圖



圖2 郵件服務(wù)器總體架構(gòu)
有了這些架構(gòu)在軟件安裝和調(diào)試的過程中會(huì)感覺非常的清晰明快。

在安裝進(jìn)行之前必須要有DNS的支持,如果你的服務(wù)器IP地址沒有被DNS解析可以自己運(yùn)行named deamon作為Dns服務(wù)器,并給自己分配一個(gè)域名,然后把自己的IP放到/etc/resolve.conf中。我這里是 mail.itp.swjtu.edu.cn。
首先要安裝Qmail的基本系統(tǒng)。詳細(xì)步驟如下:(mail.itp.swjtu.edu.cn替換成相應(yīng)的郵件服務(wù)器的域名)
建立必要的用戶和用戶組
# pw groupadd nofiles
# pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
# pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
# pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
# pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
# pw groupadd qmail
# pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent
# pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent
# pw useradd qmails -g qmail -d /var/qmail -s /nonexistent
創(chuàng)建安裝目錄,解壓安裝軟件源代碼包
# mkdir /var/qmail #創(chuàng)建安裝目錄缺省為/var/qmail
# tar zxvf qmail-1.03.tar.gz #解開源碼
# cd qmail-1.03.tar.gz #進(jìn)入源碼目錄
進(jìn)行安裝
# make setup check #安裝拷貝文件
#./config-fast mail.itp.swjtu.edu.cn #添加域名到/var/qmail/control目錄下的文件中
# (cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root)
# chmod 644 ~alias/.qmail*
拷貝MDA執(zhí)行代碼
# cp /var/qmail/boot/home to /var/qmail/rc #拷貝home腳本到缺省啟動(dòng)位置
# csh -cf '/var/qmail/rc &' 啟動(dòng)MDA部分

由于現(xiàn)在有兩種比較流行的郵箱目錄形式:/home/$user/Mailbox和/home/$user/Maildir/,郵件分發(fā)代理MDA要判斷郵件往哪一個(gè)郵箱分發(fā)郵件所以必須正確配置/var/qmail/rc文件,Mailbox是用一個(gè)文件來保存$user用戶的所有郵件,而 Maildir/方式是采用目錄的方式來保存用戶的每一封郵件,效率比前者高且減少了錯(cuò)誤幾率。所以推薦使用Maildir/格式,因?yàn)閞c文件缺省采用 Mailbox格式所以我們打開該文件將‘Mailbox’替換成為‘Maildir/’保存,kill掉剛才前面用rc啟動(dòng)的qmail-send等進(jìn)程并且重新啟動(dòng)MDA。

 

用Inetd啟動(dòng)smtp模塊:
相當(dāng)于運(yùn)行了/var/qmail/bin/tcp-env /var/qmail/bin/qmail-smtpd
編輯/etc/inetd.conf,找到smtp模塊,去除其前面的注釋“#”號(hào)
# killall –HUP inetd #重新啟動(dòng)Inetd服務(wù)將smtp帶起
到整個(gè)時(shí)候你已經(jīng)可以通過郵件客戶端比如Foxmail連接smtp服務(wù)了,整個(gè)服務(wù)器目前沒有任何驗(yàn)證功能,什么用戶什么地址都加以轉(zhuǎn)發(fā)。
因?yàn)槟壳斑沒有安裝用來做用戶名和密碼監(jiān)測的工具,如果只使用FreeBSD的系統(tǒng)用戶名和密碼文件(/etc/passwd)來作為認(rèn)證那僅僅安裝checkpasswd工具就可以了,安裝方法如下:
# tar zxvf Checkpassword-0.81.tar.gz //解包
# cd checkpassword-0.81
# make //編譯源代碼
# make install check //安裝-拷貝checkpasswd到/bin/目錄
安裝完成之后可以用下面的命令測試一下checkpasswd是否工作正常。
(注:qmail-popup的運(yùn)行語法是“qmail-popup 服務(wù)器域名 運(yùn)行的子程序”,在這里域名是mail.itp.swjtu.edu.cn,子程序是驗(yàn)證程序checkpasswd。)
# /var/qmail/bin/qmail-popup mail.itp.swjtu.edu.cn /bin/checkpassword pwd
+OK <...@ mail.itp.swjtu.edu.cn >
user zhp //輸入用戶名 'zhp'
+OK
pass Friend //輸入密碼'Friend'
/usr/home/zhp/ //認(rèn)證成功返回zhp用戶的用戶目錄
(-ERR authorization failed) //認(rèn)證失敗則這樣顯示
如果工作正常就可以把pop3服務(wù)的啟動(dòng)代碼輸入到/etc/inetd.conf文件中了。加入如下字符到該文件中后用“#killall –HUP inetd”重新啟動(dòng)inetd服務(wù)。
pop3 stream tcp nowait root /var/qmail/bin/qmail-popup qmail-popup mail.swjtu.edu.cn /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir //中間不換行
到這個(gè)階段,你的服務(wù)器已經(jīng)可以通過smtp和pop3承擔(dān)基本的郵件收發(fā)任務(wù)了,用Foxmail測試一下,如果一切順利就繼續(xù)了。
接下來的工作就是利用vpopmail軟件來讓服務(wù)器支持虛擬域。因?yàn)楝F(xiàn)在這個(gè)階段的郵件服務(wù)器僅僅能夠?qū)reeBSD上的用戶提供郵件服務(wù),如果每增加一個(gè)郵件用戶都要給系統(tǒng)增加一個(gè)用戶的話,不但浪費(fèi)資源而且會(huì)帶來安全的隱患,而且現(xiàn)在的這個(gè)服務(wù)器僅僅支持一個(gè)域名 mail.itp.swjtu.edu.cn。vpopmail提供了虛擬域的功能同時(shí)也把基于/etc/passwd的認(rèn)證轉(zhuǎn)為基于 /home/vpopmail/domain/%domain%/passwd.cdb (vpopmail缺省安裝在/home/vpopmail,%domain%是建立的虛擬域名)的認(rèn)證,也可以選擇通過數(shù)據(jù)庫存儲(chǔ)用戶的注冊信息,這里就以mysql數(shù)據(jù)庫為例。

為了簡單起見,在這里我假設(shè)用戶已經(jīng)安裝了Mysql服務(wù)器并且工作正常。我們只要著手vpopmail的安裝和配置就可以了。

先解包、然后配置為以mysql數(shù)據(jù)庫方式認(rèn)證、編譯、安裝。
# tar zxvf vpopmail-5.2.2.tar.gz
# cd vpopmail-5.2.2
# ./configure –enable-mysql=y --enable-roaming-users=y
//聲明用mysql方式認(rèn)證并支持漫游用戶
# pw group add -g 89 vchkpw //建立用戶組vchkpw
# adduser vpopmail //創(chuàng)建用戶vpopmail,不用pw user add是因?yàn)閍dduser會(huì)創(chuàng)建一個(gè)用戶目錄/home/vpopmail
# make //編譯
# make install-strip //安裝到/home/vpopmail
Vpopmail安裝好了,checkpasswd當(dāng)然就要“退休”了。Vpopmail中用來取代checkpasswd軟件的模塊是vchkpw。還是編輯/etc/inetd.conf,把前面設(shè)置的pop3那行改為
pop3 stream tcp nowait root /var/qmail/bin/qmail-popup qmail-popup mail.itp.swjtu.edu.cn home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir
//中間不換行
再用killall-HUP inetd重新啟動(dòng)就可以基于mysql數(shù)據(jù)庫進(jìn)行認(rèn)證了。當(dāng)然我們現(xiàn)在還沒有常見任何域和用戶,現(xiàn)在談?wù)J證還太早。用下列命令創(chuàng)建域名和用戶。
# cd /home/vpopmail/bin
# ./vadddomain mail.itp.swjtu.edu.cn 123456 //創(chuàng)建虛擬域,如果是第一次創(chuàng)建會(huì)連 接mysql數(shù)據(jù)庫建立一個(gè)vpopmail的數(shù)據(jù)庫
# ./vadduser zhp@mail.itp.swjtu.edu.cn Friend //創(chuàng)建用戶zhp

(注:在連接數(shù)據(jù)庫的時(shí)候vpopmail可能會(huì)錯(cuò)誤的去找/usr/local/mysql/tmp/mysql.sock作為和mysql進(jìn)行連接的渠道,一般mysql.sock被安裝到了/tmp/mysql.sock處,用

 

# mkdir /usr/local/mysql/tmp
# ln –s /tmp/mysql.sock /usr/local/mysql/tmp/mysql.sock
命令建立一個(gè)符號(hào)連接一般就不會(huì)出錯(cuò)了。不過具體問題還要具體分析。)

用vadddomain 和vadduser命令來向mysql數(shù)據(jù)庫里面而不是/etc/passwd里面添加用戶確實(shí)科學(xué)可許多但總不能每增加一個(gè)用戶都去麻煩我們的管理員吧!為了方便的注冊用戶,這不有了Vqsingup軟件包提供了基于WEB的注冊功能。其前提當(dāng)然需要一個(gè)Web服務(wù)器,所以鼎鼎有名的Apache擔(dān)當(dāng)此任就最合適不過了。

如果你的vpopmail和apache都是安裝在缺省的/home/vpopmail和/user/local/apache目錄下面,這個(gè)軟件的安裝就簡單了。
# tar zxvf vqsignup-0.5.tar.gz
# cd vqsignup-0.5
# make
# make install
如果你的apache裝到了別處比如/usr/local/www,那你要找到Makefile把cgibindir = /usr/local/apache/cgi-bin 改為cgibindir = /usr/local/www/cgi-bin。
可能要修改一下相應(yīng)文件的權(quán)限才能在瀏覽器中看到注冊的頁面。
# cd /usr/local/apache/cgi-bin/vqsignup
# chown vpopmail vqsignup.cgi
# chgrp vchkpw vqsignup.cgi
# chmod ug+s vqsignup.cgi
要說到這里還沒有完,還必須修改那個(gè)vqsignup.html文件,把你的可以用域名替換掉那些‘test.com’等東西,其實(shí)還有一些路徑的問題軟件包還沒有處理好,這里一下說不清楚,懂一些網(wǎng)頁的人應(yīng)該能輕松搞定,html文件夾內(nèi)的一些信息提示文件都可以加以漢化和美化一下。安裝后的樣子如圖。
(http://mail.itp.swjtu.edu.cn/vqsignup.html)

圖3 sqsignup新用戶注冊頁面
用Inetd來啟動(dòng)smtp和pop3有個(gè)問題,就是不能限制來訪者的IP,這樣固然有不安全因素。所以現(xiàn)在很多郵件服務(wù)器網(wǎng)站都采用tcpserver工具來保護(hù)自己的網(wǎng)站免受惡意攻擊。下面是安裝過程:
# tar zxvf ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp-0.88
# make //編譯
# make setup check //執(zhí)行檔tcpserver將被安裝于 /usr/local/bin 中。
現(xiàn)在我們來改變pop3的運(yùn)行方式:先把/etc/inetd.conf中的pop3部分刪除或者加‘#’注釋掉,運(yùn)行killall –HUP inetd關(guān)掉pop3;然后創(chuàng)建一個(gè)/pop3.sh腳本加入下面的執(zhí)行代碼:
/usr/local/bin/tcpserver -H -R 0 pop3 /var/qmail/bin/qmail-popup mail.itp.swjtu.edu.cn /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &
里面的參數(shù)你只要看懂個(gè)大概就行了。保存文件后用chmod +x /pop3.sh給文件加上執(zhí)行屬性,最后用sh /pop3.sh執(zhí)行腳本,pop3就運(yùn)行在后臺(tái)了。

說了這么多,可是smtp還沒有認(rèn)證功能呢,這樣我們的服務(wù)器會(huì)被任何人用來relay他們的垃圾郵件。由于qmail本身不提供認(rèn)證功能,實(shí)現(xiàn)這個(gè)功能只能靠第三方的插件來實(shí)現(xiàn)了,比較有名氣的就是qmail-smtpd-auth-0.26 和cmd5checkpw-0.22的組合。由于是打補(bǔ)丁需要qmail的源代碼。假設(shè)qmail-1.03.tar.gz、qmail-smtpd- auth-0.31.tar.gz在同一目錄,則進(jìn)入該目錄后做如下操作:
# tar zxvf qmail-1.03.tar.gz
# tar zxvf qmail-smtpd-auth-0.31.tar.gz
# cp README.auth base64.c base64.h ../qmail-1.03
# patch -d ../qmail-1.03 < auth.patch
# ../qmail-1.03/make qmail-smtpd
# cp ../qmail-1.03/qmail-smtpd /var/qmail/bin/qmail-smtpd-auth
上面的操作實(shí)際上是把打了補(bǔ)丁的qmail-smtp執(zhí)行檔單獨(dú)編譯了一下然后拷貝到了/var/qmail/bin下另取名為qmail-smtpd-auth。
接下來安裝cmd5checkpw-0.22
#tar zxvf cmd5checkpw-0.22
#cd cmd5checkpw-0.22
#make
#mkdir /usr/man //在FreeBSD中缺省沒有這個(gè)目錄
#make install
最后編寫smtp的執(zhí)行腳本
/usr/local/bin/tcpserver -H -R -l 0 -t 1 -v -p -x /etc/tcp.smtp.cdb -u 89 -g 89 0 smtp /var/qmail/bin/qmail-smtpd.auth /home/vpopmail/bin/vchkpw /bin/true /bin/cmd5checkpw /bin/true 2>&1 &
\\中間沒有分行

同前面講到的/pop3.sh一樣編成一個(gè)/smtp.sh可執(zhí)行腳本,在執(zhí)行前把 /etc/inetd.conf中smtp的項(xiàng)目屏蔽或刪除并用killall –HUP inetd關(guān)閉前面打開的smtp服務(wù)。sh /smtp.sh之后你的服務(wù)器就已經(jīng)有smtp認(rèn)證功能了。

 

看看我們的Foxmail要怎么設(shè)置,如圖4:
 
圖4 Foxmail中認(rèn)證的設(shè)置
現(xiàn)在只能用Foxmail在操作郵件的收發(fā),其實(shí)還有一個(gè)好工具可以提供方便的Webmail服務(wù),它就是sqwebmail。
我沒有用該軟件的原版,找了個(gè)漢化的版本。安裝過程如下:
# tar xvfz sqwebmail-1.2.0.tar.gz
# cd sqwebmail-1.2.0
# ./configure --without-authpam --without-authuserdb --enable-webpass=no --without-authpwd --without-authshadow --with-mimetypes=/usr/local/apache/conf/mime.types
# make configure-check
# make //編譯
# make check
# make install-strip
# make install-configure
如果一些順利那就大工告成,在客戶機(jī)上打開瀏覽器,輸入http://mail.itp.swjtu.edu.cn/cgi-bin/sqwebmail,出現(xiàn)下面的頁面:

圖5 sqwebmail的登陸界面

圖6 sqwebmail的登陸后的界面
最后為了讓服務(wù)器在啟動(dòng)的時(shí)候自動(dòng)加載smtp.sh和pop3.sh,我們把它們拷貝到/usr/local/etc/rc.d/目錄下面,把# csh -cf '/var/qmail/rc &' 這行啟動(dòng)MDA服務(wù)的腳本加到smtp.sh或pop3.sh中就可以了。記住一定要給這兩個(gè)文件可執(zhí)行的權(quán)限。由于時(shí)間倉促,這份手稿可能有遺漏之處,而且還有很多安裝過程也沒有搞懂,希望得到各位高手的指教.

來源:網(wǎng)絡(luò)搜集//所屬分類:Mail服務(wù)器教程/更新時(shí)間:2013-04-14
相關(guān)Mail服務(wù)器教程