總目錄
前 言
第一章 在Debian上配置Apache+MySQL+PHP4
第二章 在Debian上用Wu-ftpd配置FTP服務器
第三章 在Debian上用Exim配置郵件服務器
第四章 在Debian上配置Samba服務器
第五章 在Debian上用Bind配置DNS服務器
《Debian服務器設置入門》系列教程之第三章:郵件服務器
第三章 在Debian上用Exim配置郵件服務器
本章目錄
0 聲明
1 簡介
2 安裝
3 配置
4 小測試
5 修改 From: 的地址
6 配置Fetchmail
7 修改exim的投遞限制
8 綜合測試
9 TODO
10 結束語
11 參考文獻
0 聲明
本文是在《通過exim建立家庭網絡的郵件系統》一文的基礎上修改的,作者:Jan
W. Stumpel, Oegstgeest, The Netherlands。
這篇章的地址是:http://211.167.66.225/~yzhao/lg-zh/lg-zh-issue8/stumpel.html
1 簡介
◆
局域網中的用戶可以實現本地郵件的發送和轉發。
◆ 發往局域網以外的郵件有正確From:<郵件地址>,以使外部的郵件能夠正確的回復。
◆
電子郵件賬號是所有本地子網用戶所共享,但是要實現每個用戶僅僅能夠收到自己的郵件。
◆ exim作為郵件的收發代理(它比sendmail好配置的多)。
◆ mail作為linux端的郵件客戶程序。
◆ Microsoft Outlook Express 作為Win2000端的郵件客戶程序(同樣你也可以使用其它的類似工具,比如Foxmail)。
◆ qpopper 作為POP3服務器, 用來把郵件從Linux系統中轉移到Win2000機器上。
◆ fetchmail 用來從互聯網上收取郵件。
我在兩台機器上(分別安裝Linux和Win2000系統)做的測試,當然,win9x/NT/XP都可以,而且兩台機器都是Linux的話也當然可以。這個方案,應付一個中小型的辦公室應該綽綽有余。
1.2 網絡和命名
在這篇文章中我假定以下的名字(您實際應用時應該做寫修改,以適應您的實際情況): ◆ 擁有者和系統管理員的名稱 kanaka Leng。
◆ Linux機器名為 Debian。
◆ Win2000 機器名為 Notepad。 通常使用者為 ganghua Leng。
◆ kanaka 在 Debian 機器上的注冊用戶名為 kanaka。
◆ ganghua 在 Debian 機器上的注冊用戶名為 ganghua。
◆ ganghua 在 Notepad 機器上的注冊用戶名也為 ganghua。
她的在linux下的Debian機器和 Win2000上的口令也相同。
◆
我們公司的局域網通過寬帶連接互聯網,當然你通過普通撥號也可以。
◆ kanaka 和 ganghua 都使用電子郵件地址:[email protected]。
◆ kanaka到POP3收信的口令為kanakapswd。
◆ ISP的發送郵件的郵件服務器為smtp.yeah.net。
◆ ISP的接受郵件的郵件服務器為pop3.yeah.net。
機器Debian和Notepad都屬於一個域,域名為test.com。 這個域名是我們內部搞測試用的,我們並沒有注冊這個域名, 因而對於外部網絡來說, 並不能直接識別這個域名。
此外,我還假設內部網絡已經正常工作, 並且已經擁有使用daild實現的非永久撥號連接,或者寬帶網連接。 在Debian機器上也沒有安裝DNS服務。/etc/resolv.conf中只是加入了ISP提供的兩個DNS服務器的地址。同樣的設置也要加在Notepad機器上的TCP/IP設置中。
1.3 郵件地址
在"To:"和"From:"中指定郵件地址是一封郵件的基本組成部分, 此外還有更多的內容。 舉例來說:To: ganghua Leng <[email protected]>
'ganghua Leng'是一個"real-name part"(真實姓名部分)。 這是通過撰寫電子郵件的程序加上的。 這個部分就是將郵件發送給ganghua本人的依據。 注意:如果在real-name part中有句點存在, 郵件地址必須用"符號包圍起來(例如:"kanaka C.Leng")。 您可以用man mailaddr參考一下相關的幫助頁。
2 安裝
由於我們已經安裝了Debian基本系統,而Debian基本系統裡面含有exim和mail這兩個軟件,所以我們只需要安裝這兩個:fetchmail、fetchmailconf和qpopper。
其中,fetchmailconf是用來配置fetchmail的工具。
系統會有一些問題提問你。當問你是否以root身份運行system-wide
fetchmail時,答Yes。其他的都選默認值。
3 配置
3.1 配置Debian的hosts
Debian機器上的/etc/hosts文件內容如下:
3.2 配置exim
在Debian下,這一切都是由eximconfig程序來完成的。程序將問到一些問題,你可以參考下面的回答:
◆ 你的系統是一個Internet主機(選擇1,雖然你在局域網。這樣你可以發郵件到互聯網)。 上面我們給本地的kanaka發了一封郵件,並抄送給了互聯網上的[email protected]。注意,要結束一封信的內容,在新的一行輸入“.”就可以了。我在Win2000上用Outlook
Express就可以收到發給kanaka的信;而發給[email protected]的信,我到freemail.yeah.net站點上去,也收到了。
現在test.com已經真正成為了一個具有郵件轉發功能的本地域,而且可以發送郵件到互聯網上的[email protected]。但是,一個格式為From:[email protected]的地址顯然是無法被外部用戶回復的,
因為對於外部網絡來說, test.com是一個不存在的(因而不合法)的域名。因此,我們還需要修改From:的地址。
5 修改 From: 的地址
在往互聯網上發送郵件的時候,為了他們可以正確的回復,我們必須把本地的From:地址格式改變成為一個合法的電子郵件地址。 借助於exim的"傳送過濾器", 我們可以實現這一功能。 往外部轉發的郵件經過這個傳送過濾器以後, From: 中的地址就會被改變, 而對於本地郵件則沒有什麼影響。 下面的過濾器將實現這個惡作劇式的技巧,
首先我們確定我們要改變的地址永遠包含在"<>"符號之內。
雖然不能完全保證, 但是通常的郵件程序:mail甚至Microsoft
Outlook Express都是生成這種格式的電子郵件地址。
5.1 創建outfit文件
我們來創建一個文件,/usr/bin/outfit,內容如下:
#!/usr/bin/perl
while (<STDIN>) {
if (/^From: /) {
s/<.*>/<'[email protected]'>/;
print "$_"; last;
}
print "$_";
}
while (<STDIN>) { print "$_"; }
把這個文件放到/usr/bin目錄中,命名為outfit,不要忘記把上面的電子郵件地址換成你自己的電子郵件地址!
然後,通過下面的命令chmod +x /usr/bin/outfit加上可執行的權限。
#
chmod +x /usr/bin/outfit
5.2 修改exim.conf
打開/etc/exim/exim.conf,找到下面一行:
driver = smtp
在它的下面加上兩行,就成了:
driver = smtp
headers_remove = "sender"
transport_filter = "/usr/bin/outfilt"
通過上述對/etc/exim.conf文件的修改,無論何時發送一封電子郵件到本地域以外時,都可以被exim正確的投遞了。如果你使用的是撥號網絡,那麼Exim(通過daild)每發送一次郵件,就會向外撥一次號。而我們公司的寬帶24小時在線,所以郵件每次都是直接就發出去了。
6 配置Fetchmail
我們需要運行fetchmailconfig,來在你的主目錄裡產生一個叫.fetchmailrc的文件,否則你就不能使用fetchmail。 fetchmial將從互聯網的郵件服務器上取回郵件(並轉交給exim再做本地投遞)。 你看到了吧,它說fetchmialconf這個程序比如在X下面運行。唉!我們要把debian做服務器用,而服務器根本不需要安裝X的,我們不會為了配置fetchmail再去安裝一個X系統和一個窗口管理器吧!好吧,那麼我們就手工寫這個文件吧,其實也很簡單。
由於我們是要把郵件接收到kanaka在本地的信箱裡面,所以應該在kanaka的主目錄裡面產生這個.fetchmailrc,所以我們切換到kanaka用戶,再進行操作:
然後,輸入以下內容,存盤退出即可:
set postmaster "postmaster"
poll pop3.yeah.net with proto POP3 user "[email protected]" password "kanakapswd"
.fetchmailrc文件可以在不同用戶之間相互拷貝,只要把文件的屬主設置成相關的用戶即可。不過把用戶的郵件密碼用明碼寫在這個文件中顯然是一種不明智的方式。
或許應該有更好的方法,請大家告訴我啊,呵呵。
然後,使用fetchmail命令來把郵件從互聯網上拖到本地來:
$
fetchmail
1 message for [email protected] at
pop3.yeah.net (1648 octets).
reading message [email protected]@pop3.yeah.net:1 of 1 (1648 octets) .
flushed
然後,你可以在win2000的Outlook Express裡面,從本地接收這些郵件。
7 修改exim的投遞限制
Exim 缺省的一次投遞郵件的最大數量為100封。 你可以根據你們單位的實際情況,修改這個值。如果需要取消這個限制,就把它改為0,不過小心受到攻擊:smtp_accept_queue_per_connection = 0
8 綜合測試
你可以在Debian上和Win2000上多發幾封郵件,做一下測試。
9 TODO
在下一個版本中,我們將描述如何使用.forward文件,實現轉發,把信件正確的投遞郵件給某個用戶,而不是一下子都發給kanaka。
我們還將描述,如何建立一個webmail系統。
10 結束語
本文是《Debian服務器設置入門》系列教程之第三章,建議您按照順序閱讀,有問題可以和作者kanaka聯系。
11 參考文獻
本文在開頭就聲明,本文是在《通過exim建立家庭網絡的郵件系統》一文的基礎上修改的,作者:Jan
W. Stumpel, Oegstgeest, The Netherlands。
這篇章的地址是:http://211.167.66.225/~yzhao/lg-zh/lg-zh-issue8/stumpel.html
之所以這樣,是因為,這篇文章對我們來說太珍貴了,除了她,我沒有找到其他關於exim的資料。
非常感謝原文作者,以及翻譯者!