利用 FreeBSD 組建輕量級郵件系統
發表于:2007-07-02來源:作者:點擊數:
標簽:
系統功能與特點: 組建簡單成本低: 使用免費但十分優秀的網絡操作系統 FreeBSD + 各種優秀的自由軟件。無須擔心版權問題。對設備整體要求低。 系統有極高的可維護性: 除兩個可選模塊外,所有軟件均采用 ports 樹安裝,因此系統組建時間短。并能隨時升級用上
系統功能與特點:
組建簡單成本低:
使用免費但十分優秀的網絡操作系統 FreeBSD + 各種優秀的自由軟件。無須擔心版權問題。對設備整體要求低。
系統有極高的可維護性:
除兩個可選模塊外,所有軟件均采用 ports 樹安裝,因此系統組建時間短。并能隨時升級用上最新最安全的系統軟件和安全補丁。
安全性高:
由于采用 UNIX 系統,你不用過于擔心病毒問題!所有 windows 上的病毒都對你的郵件系統都是“無效”的!你還可以另外安 裝郵件防病毒插件。
整個郵件系統(SMTP、POP、WEBMAIL)還采用了 SSL (安全套接層)傳輸,能保證整個傳輸過程中的數據被加密防止被他人盜竊 。有著極高的安全性、穩定性。
界面美觀:
Openwebm : 一個十分優秀的 web mail ,
本地化語言,簡單宜用。還有網絡硬盤、SSH 功能。
組合靈活:
系統支持 SMTP、POP、SSL、Webmail 等功能。各功能模塊(如 POP、SSL)有相當的選擇余地能自由組合,能為不同的用戶、 用戶組定義不同的郵箱大小。
綜述:是一個適合用于企業、學校、個人或其它要高安全性、高
性能等站點的小型郵件系統。
本文說明與介紹:
# 此符號開頭是注釋內容,可加入到相應的配置文件中去。
<== 此符號是本人對此項功能或參數的附注說明、解釋,請不要加入到文件中去。
Ssl :安全套接層,用來加密傳輸過程中的數據。在此系統中此功能是可選部分。
Qpoper POP SERVER:一個使用 mail client 程序收信的服務。在此系統中此功能是可選部分。
所需系統與軟件環境:
FreeBSD 4.8 十分優秀的 NET OS
Sendmail SMTP SERVER
安裝路徑:系統自帶
Apache 2.0.47 WEB SERVER
安裝路徑:/usr/ports/www/apache2
Openssl 0.97 SSL TOOL
安裝路徑:/usr/ports/security/openssl
Openwebmail 2.10 WEB MAIL
安裝路徑:/usr/ports/mail/openwebmail/
qpoper POP SERVER
安裝路徑:/usr/ports/mail/qpopper/
Stunnel 4.04 SSL 服務 TOOL
安裝路徑:/usr/ports/security/stunnel/
使用 PPPOE 上網,動態 IP
域名申請:
到 www.dns0755.net 申請免費(或收費)域名!有關使用請參考該網站的相關說明。本例是 xiaohua.dns0755.net
演示主頁面:
http://xiaohua.dns0755.net <== 不使用 SSL
https://xiaohua.dns0755.net/ <== 使用 SSL
Openwebmail Login 演示頁面: <== 強制使用 SSL (可選)
https://xiaohua.dns0755.net/cgi-bin/openwebmail/openwebmail.pl
注意:本例中 Openwebmail 是使用 OS 系統用戶作
數據庫。
Mail client 程序演示
服務器(可用 Kmail、OUTLOOK、FOXMAIL 等):
SMTP SERver: xiaohua.dns0755.net <== 使用明文傳輸, 端口: 25
xiaohua.dns0755.net <== 使用 SSL 傳輸,端口: 465
POP SERver: xiaohua.dns0755.net <== 使用明文傳輸, 端口: 110
xiaohua.dns0755.net <== 使用 SSL 傳輸,端口: 995
演示用戶:
用戶名、密碼:guest
用戶名、密碼:guest1
啟動時自動轉發 IP 解釋 xiaohua.dns0755.net 域名。
將 www.DNS0755.net 客戶端程序放到 /usr/local/dns/ 中去,并配置好你的域名。在 /etc/crontab 中加入:
@reboot xiaohua /usr/local/dns/DNSClient # 啟動時自動執行
*/4 * * * * xiaohua /usr/local/dns/DNSClient # 每 4 分鐘執行一次(可選,但建議使用)
其中上面的 xiaohua 是本系統的一個用戶。表示用 xiaohua 這個用戶執行 /usr/local/dns/DNSClien 這個程序。
系 統 安 裝
為保證一次成功安裝并能用上最新版本的軟件,在安裝前請先升級你的整個 ports 樹。升級前你要安裝了 cvsup 軟件??傻?http://www.cn.freebsd.org/ports/index.html 下載,然后用 pak_add 命令安裝?;蛴媚愕?FreeBSD CD 來安裝。完成后繼續。
cp /usr/src/share/examples/cvsup/ports-supfile /root/
修改 ports-supfile ,將 :
*default host=CHANGE_THIS.FreeBSD.org
改成
*default host=cvsup.cn.FreeBSD.org
接著升級你的 ports 樹,執行:
cvsup ports-supfile
升級開始。升級速度視乎你的接入速度。一般半小時內可完成。完成后再安裝其余的軟件。
安裝 Apache 2.0.47:
cd /usr/ports/www/apache2
make install clean
請自行參考有關 apache 的文檔配置站點首頁及啟動 apache 服務。
安裝 Openwebmail:
cd /usr/ports/mail/openwebmail/
make install clean
安裝 Openwebmail 的文件系統配額與 http 壓縮功能模塊(此功能可選):
http://openwebmail.com/openwebmail/download/packages/Quota-1.4.6.tar.gz
http://openwebmail.com/openwebmail/download/packages/Compress-Zlib-1.21.tar.gz
下載后 tar 解壓,然后進入相應的目錄下運行以下命令安裝:
perl Makefile.PL
make
make install
OK,Openwebmail 應該起來了,試打入 :
http://you_server/cgi-bin/openwebmail/openwebmail.pl
應該看到 login 畫面了!HTTP資料壓縮傳送功能也應該能用!這樣整個 Apache 與 Openwebmail 就起來了。馬上用一個系統內的帳戶上去看看!
非常漂亮的 Openwebmai 的 login 頁面
Opnewebmail 主界面1
Opnewebmail 主界面2
Openwebmail 高級配置:
配置文件在 /usr/local/www/cgi-bin/openwebmail/etc/ 下。共有三個相關文件。但只修改
openwebmail.conf 就行了。
15:10 [xiaohua] [/usr/local/www/cgi-bin/openwebmail/etc] ls -l openwebmail.*
total 8146
-rw-rw-rw- openwebmail.conf <== 用戶定義配置,用戶可修改
-rw-r--r-- openwebmail.conf.bak <== 這是我的備份文件,不算數
-rw-r--r-- openwebmail.conf.default <== 系統全局配置,不要修改
-rw-r--r-- openwebmail.conf.help <== 配置文件的說明
☆注意:
修改配置前請先備份原配置文件,并仔細“參考、閱讀”原 openwebmail.conf 文件再進行配置系統!本文所提到的選項并不一定會出現在原文件中,也不一定是你需要的!更多信息請參考其余兩個文件(但最好不要修改)。
以下是我的 openwebmail.conf 文件(只對有需要的作說明)
domainnames auto <== 這里設定域名,請設成你相應的域名,如:xiaohua.dns0755.net
auth_module auth_unix.pl <== 認證方式使用你的 OS 上的系統用戶,也可用 sql 、ldap
mailspooldir /var/mail
dbm_ext .db
dbmopen_ext none
dbmopen_haslock no
ow_cgidir /usr/local/www/cgi-bin/openwebmail
ow_cgiurl /cgi-bin/openwebmail
ow_htmldir /usr/local/www/data/openwebmail
ow_htmlurl /openwebmail
logfile /var/log/openwebmail.log
spellcheck /usr/local/bin/ispell
default_language zh_CN.GB2312 <== 使用語言。此部分為手工加入。
default_dateformat yyyy-mm-dd <== 日期格式。此部分為手工加入。
default_hourformat 24
savedsuid_support yes
<default_signature> <== 這是郵局個性化簽名
================================================
致此!
歡迎光臨海鷹的家! ( https://xiaohua.dns0755.net )
================================================
海鷹:大海之鷹!生命由海而來,隨海而去!
┏━━━━━━━━━━━┓
┃■■■■■■■■■ ┃
┗━━━━- 85% ━━━━┛
離成功還有 15%
================================================
</default_signature>
<default_autoreplytext> <== 自動回信內容
您好:
來信已收到了,我會盡快處理!
你的信件@#$SUBJECT@# 。致此??!
I will not be reading my mail for a while.
Your mail regarding @#$SUBJECT@# will be read when I return.
</default_autoreplytext>
#### 以下是磁盤配額部分,此部分為手工加入。
#### 使用 OS 的文件系統配額。并需在/etc/fstab 中啟用配額功能及安裝了OS FS 配額模塊才能正常使用。
#### 用戶配額使用 edquota 命令在系統中設定??舍槍τ脩艋蚪M獨立設置,很靈活。
quota_module quota_unixfs.pl
############### 下面兩項一起使用 #############
#quota_module quota_du.pl <== 使用 openewbmail 配額功能
# 設定使用者能使用的空間上限. 單位:Kbyte 。 這個設定只有在 quota_module
# 不傳回使用者 quota 上限時(如 quota_du.pl) 才會被使用。
#quota_limit 82420 <== 設定配額上限,只在使用 quota_du.pl 時有效
☆注意:
quota_unixfs.pl 與 quota_du.pl 兩者只能用一個,不能兩個同時用。使用 quota_unixfs.pl(OS Files system disk QUOTA) 時會比較靈活,可為不同用戶、組設不同的配額。但性能可能相對比 quota_du.pl 差小許。
#一般情形下, 使用者的空間使用狀況會顯示在視窗的外框上邊。但是當使用者空間用量超過其上限的
#quota_threshold% 時,會有一個較明顯的 quota 使用量顯示在頁面的上方以提醒使用者。
quota_threshold 75 <== Quota 警告值:75%
attlimit 900000
# 當使用者空間已滿時, 是否自動刪除各信匣中過舊的郵件以取得一些空間。
delmail_ifquotahit no
# 當使用者空間已滿時, 是否自動?除網絡磁盤中過舊的文件以取得一些空間。
delfile_ifquotahit no
############ 系統安全部分。此部分為手工加入。#############
enable_rootlogin yes <== root 可以 login
enable_sshterm no <== 允許用戶使用 ssh 功能
forced_ssl_login yes <== 強制使用 ssl login
########### 以下部分為系統信息(OS、版本等控制)此部分為手工加入。############
enable_about no # 是否顯示關于功能
about_info_software no # 是否顯示軟件信息
about_info_protocol no # 是否顯示使用協議
about_info_server no # 是否顯示服務器信息
about_info_client no # 是否顯示客戶信息
########### 自動回信標題 ###########
default_autoreplysubject 您好!這是一封從“海鷹郵局”的自動回信。
########## 郵局 login 畫面信息。此部分為手工加入。###########
# 原圖像位置 /usr/local/www/data-dist/openwebmail/images/openwebmail.gif
logo_url %ow_htmlurl%/images/hy2.gif <== 自定義的郵局的 logo,我的是一只鳥
logo_link https://xiaohua.dns0755.net/ <== 自定義的郵局 logo 上的 URL,本站首頁
讓 sendmail 能收取 xiaohua.dns0755.net 的信
讓 sendmail 能收取 xiaohua.dns0755.net 的信,須將 xiaohua.dns0755.net 加入到 sendmail 中去。
cd /etc/mail
ee local-host-names
寫入 xiaohua.dns0755.net 這個域名,保存退出。
make cf
make install
重啟 sendmail
killall -HUP sendmail
從其它地方寫一封信給 xiaohua.dns0755.net 看能不能收到。正常時應該能收到!
使用 SSL 讓你的 Web mail 信息更安全
在 apache 2 中使用 ssl ,要先安裝 openssl :
cd /usr/ports/security/openssl
make install clean
利用 openssl 創建與自簽發 Apache 2 的證書 -- CA :
cd /usr/local/etc/apache2/
mkdir ssl.key
mkdir ssl.crt
openssl genrsa 1024 > ssl.key/server.key
顯示信息如下:
15:50 [/usr/local/etc/apache2/] openssl genrsa 1024 > ssl.key/server.key
Generating RSA private key, 1024 bit long modulus
...++++++
............++++++
e is 65537 (0x10001)
只讓 root 才能訪問 CA 證書:
chmod 400 ssl.key/server.key
利用 CA 創建一個自簽署的 CA 證書。命令:
cd /usr/local/etc/apache2/
openssl req -new -key ssl.key/server.key -x509 -days 365 -out ssl.crt/server.crt
會要你填入相關信息,如下:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter @#.@#, the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN <== 兩個字母的國家代號
State or Province Name (full name) [Some-State]:GD <== 省份
Locality Name (eg, city) []:FSNH <== 城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:FreeBSD <== 公司
Organizational Unit Name (eg, section) []:I386 <== 部門
Common Name (eg, YOUR name) []:Xiaohua <== 你的姓名
Email Address []:bdiy2010@yahoo.com.cn <== 你的 E_mail
-----BEGIN CERTIFICATE-----
MIIDXz
CCAsigAwIBAgIBADANBgkqhkiG9w0BAQQFADCBgjELMAkGA1UEBhM
CQ04x
CzAJBgN
VBAgTAkdEMQ0wCwYDVQQHEwRGU05IMRAwDgYDVQQKEwdGcmVlQlNEMQ0w
部分省略……
zyeGykJ+9xm53nWeruNSbJu3qnYBMQl4SUyWwluJwF02wB/xBdcnJxpkbgw3i9EE
TPw17kxTA9d5u/nZ5jQoFPOesv+exr7bhMj0/A+fWX+qEV+vAKKalii7GsDdkFdk
2QqG
-----END CERTIFICATE-----
15:56 [xiaohua] [/home/xiaohua]
OK,證書到此已完成了。接下來要讓 apache 運行在 ssl 模式,運行:
apachectl stop
apachectl startssl
在游覽器中用 https://you_server 看能否正常游覽你的首頁。正常時游覽器會提示你證書信息。確定后應能看到以前的首頁。注意:因為證書是自簽發,有些游覽器會提示證書不可信,不用管它!OK,整個傳輸過程已不是明文傳輸了。
瀏覽器提示證書信息
建立有 SSL 功能的 SMTP、POP 服務器
用 web 方式收發郵件的安全問題解決了。但 SMTP、POP 上的還是明文傳輸的。下面介紹如何做有 SSL 功能的 SMTP、POP 服務器。
安裝 POP server:
cd /usr/ports/mail/qpopper/
make install clean
qpoper 服務要用 inetd 啟動。安裝完成后修改 /etc/inetd.conf 文件,加入一行:
pop3 stream tcp nowait root /usr/local/libexec/qpopper qpopper -s
檢查是否啟動了 inetd ,請檢查 /etc/rc.con 中的 inetd_enable="YES" 項。只要不是設
inetd_enable="NO" 就不用管它了。如果要手工啟動 inetd 只須鍵入 inetd 。要重啟 inetd :
killall -HUP inetd
安裝 stunnel 以支持 SMTP、POP 的 SSL
Port: stunnel-4.04_2
Path: /usr/ports/security/stunnel
cd /usr/ports/security/stunnel
make <=== 注:這里面先只用 make ,不能一屁股的 make install clean
接下來要為 stunnel 創建證書:
make cert
到這步時會要你填入相關信息。請參考 Apache 與 openssl 部分。完成后會提示你證書已安裝到 /usr/local/etc/ 中去了??词欠裼袀€ stunnel.pem 文件。
12:22 [xiaohua] [/usr/ports/security/stunnel] ls -l /usr/local/etc/stunnel.*
-rw------- 1 root wheel 1746 Aug 21 18:29 /usr/local/etc/stunnel.pem
☆注意:請確定在提問 Common Name (FQDN of your server) 時寫入你的服務器名。本例是 xiaohua.dns0755.net
下面是部分信息摘錄:
Country Name (2 letter code) [PL]:CN
State or Province Name (full name) [Some-State]:China-GD
Locality Name (eg, city) []:FSNH
Organization Name (eg, company) [Stunnel Developers Ltd]:FreeBSD
Organizational Unit Name (eg, section) []:I386
Common Name (FQDN of your server) [localhost]:xiaohua.dns0755.net <== 寫入你的域名
/usr/local/bin/openssl x509 -subject -dates -fingerprint -noout -in stunnel.pem
subject= /C=CN/ST=China-GD/L=FSNH/O=FreeBSD/OU=I386/CN=xiaohua.dns0755.net
notBefore=Aug 23 10:20:40 2003 GMT
notAfter=Aug 22 10:20:40 2004 GMT
MD5 Fingerprint=28:08:6C:7B:B2:9C:0E:16:EF:3F:BA:38:E5:32:37:04
install -m 600 /usr/ports/security/stunnel/work/stunnel-4.04/tools/stunnel.pem /
usr/local/etc/
make install clena <=== 完成最后的安裝
安裝完成了,但還沒能正常運行 stunnel 。還有很多事要做了!
cd /usr/local/etc/stunnel/
cp stunnel.conf-sample stunnel.conf
修改這個 stunnel.conf 文件,將:
cert = /usr/local/etc/stunnel/mail.pem
改為:
cert = /usr/local/etc/stunnel.pem
將 [s1]、[s2] 這兩部分內容(所有)注釋或刪除掉,然后保存退出。
創建 stunnel 的運行目錄:
cd /var/tmp
mkdir stunnel
chown stunnel:stunnel
OK,馬上可以運行 stunnel 了。不過在運行前建議你先檢查你系統當前的端口情況。運行
sockstat -4 你會見到很多東西。從中你可以看到你正在運行的服務。
sockstat -4
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
www httpd 16552 4 tcp4 *:443 *:*
www httpd 16434 3 tcp4 *:80 *:*
www httpd 16434 4 tcp4 *:443 *:*
root httpd 129 3 tcp4 *:80 *:*
root httpd 129 4 tcp4 *:443 *:*
root sendmail 91 4 tcp4 *:25 *:*
root inetd 83 4 tcp4 *:110 *:*
接著起動 stunnel 吧。如果順利,系統不會返回任何信息給你:
/usr/local/etc/rc.d/stunnel.sh.sample start
再運行 sockstat -4 ,如果你見到有 stunnel、995、465 端口等信息了就代表你已經成功了!
17:37 [xiaohua] [/home/xiaohua] sockstat -4
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
www httpd 16643 3 tcp4 *:80 *:*
www httpd 16643 4 tcp4 *:443 *:*
www httpd 16434 3 tcp4 *:80 *:*
www httpd 16434 4 tcp4 *:443 *:*
stunnel stunnel 171 7 tcp4 *:465 *:* <==ssl smtp server
stunnel stunnel 171 6 tcp4 *:995 *:* <==ssl pop server
root sendmail 91 4 tcp4 *:25 *:* <==原來的 smtp server
root inetd 83 4 tcp4 *:110 *:* <==原來的 pop server
讓 stunnel 隨啟動時“正?!弊詣舆\行
因為在 make cert 時已經寫入了 xiaohua.dns0755.net 。如果啟動時 stunnel 解釋不到相應的 IP 就不能正常啟動。為此要讓 stunnel 正常啟動我們還要做兩件事:
修改 /etc/rc.con ,將 PPPOE 啟動方式改為 AUTO
ppp_mode="auto"
這樣,系統在完全撥通號前是不會執行 rc.d 的腳本!不過啟動時間會變長一點!
cd /usr/local/etc/rc.d/
cp stunnel.sh.sample zstunnel.sh
因為 rc.d 是按腳本的第一個字母做順序啟動的。這樣 stunnel 將被最后執行。就能保證 stunnel 隨系統正常啟動而不用手工干預了。
客戶端設置:
因為采用了 SSL ,所以Kmai 、OUTLOOK 等要選上 SSL 、及修改服務器的端口!詳細請見下面的插圖。
FAQ集:
1、問:我用的系統發現不能發送大的附件,請問怎樣設置發送郵件的大???
答:修改 /etc/mail/sendmail.cf ,找到
# maximum message size
#O MaxMessageSize=1000000 <== 1M
增加一行:
O MaxMessageSize=50000000 <== 50M,應該夠大了 ^_^
完成后重啟 sendmail
2、問:Openwebmail 在那申請用戶帳號?
答:Openwebmail 本身沒有此功能,除非有人寫一個。它是用操作系統上的系統用戶作數據庫的。所以這樣就一定程序上提高了安全性。你不用擔心別人天天在你的系統上申請一堆沒有帳號,或發上無數的垃圾郵件到你的系統上。否則你的系統很快就沒空間了。要增加用戶請用 adduser 、/stand/sysinstall 工具增加。還可通過 ssh 、webmin 等工具進行遠程管理。Openwebmail 還支持
mysql、ldap 等功能,你可以試一下。
3、問:我想更多了解 Openwebmail ?
答:到 /usr/local/www/data-dist/openwebmail/ 下看看吧,里面有一堆文檔,不過全是 E 文的。
4、郵件客戶端程序不能發郵件,但通過 WEB 方式能收發,怎么回事?
答:這主要是 DNS 問題造成。目前發現 www.dns0755.net 有不穩現象。甚至發現有假冒 IP 現象。造成本人有一陣子也無法正常使用 Kmail、OUTLOOK ,本人的網站也無法正常瀏覽等。這時可以通過 openwebmail 來發信了?;蛘咄ㄟ^ IP 來訪問郵件系統。
如果你條件許可,那我十分建議你申請一個固定 IP 、域名。如果這樣,這個問題就能圓滿解決了。
5、我還有更多的問題?
答:如果你有更多問題,請到以下 UNIX
論壇找我( xiaohua ),我會盡量為你解答,只要是我知道的。
http://community.FreeBSDChina.org/ www.chinaunix.net http://forum.cnfug.org/index.php?act=idx
6、我發現文章有錯誤。
答:非常好,同時希望你能告知作者!如果你有任何意見也可以告知作者!感謝! J
7、注:近日發現本人前域名 xiaohua.dns0755.net 被人冒充IP 了,導致無法正常瀏覽?,F已改為:http://bsdroot.dns0755.net 。要試用系統請將相應主機名改為 bsdroot.dns0755.net 。
作者簡介:
網絡妮稱:Xiaohua (英文)、海鷹(中文)
主頁:http://bsdroot.dns0755.net (新) MSN、E_mail:bdiy2010@yahoo.com.cn
作者的夢想:
1、和我最好的朋友、最愛的女人去海南天涯海角,去山海關合照。那一定是一件很開心的事。
2、期望有一天,我和她能成為一對海鷹,在無邊無際的大海上
自由飛翔。飛到我們想去的地方:天涯海角。從此不再分開
致謝:
所有曾經幫助過我的所有朋友、網友、網站!
參考信息:
中國、臺灣等各大 FreeBSD、UNIX 網站等。太多了,不能一一列出!實在抱歉!希望各站長不要見怪??! ^_^
,
原文轉自:http://www.kjueaiud.com