隨著互聯網的發展,e-mail迅速成長成為主要的網絡信息傳遞工具。面對大量要求能夠快速,廉價,和高可信賴的e-mail需求,很多公司和個人都把linux提供的服務作為滿足這些需求的解決方案。
redhat7.1默認安裝的時間已經安裝了SendMail8.11服務.因為redhat安裝使用都非常的簡單,我們這里就忽略安裝過程,相關資料請查閱redhatCD里的文檔.要使你的新e-mail服務器正常工作,必須先解決DNS問題.把你的e-mail服務器的主機名和ip地址加入到DNS中,并用nslookup來確認:
[root@testmail/root]#nslookup-siltestmail.blank.com
Server:192.168.100.1
Address:192.168.100.1#53
Name:testmail.blank.com
Address:192.168.100.134
同樣你也要試一下反向域名解析,這個對防止郵件延遲有很重要的作用.現在大部分的郵件服務器都是把反向域名解析作為郵件傳送時認證的一部分.所以用的你ip地址來試一下反向域名解析是否正確.
[root@testmail/root]#nslookup-sil192.168.100.134
Server:192.168.100.1
Address:192.168.100.1#53
134.100.168.192.in-addr.arpaname=TESTMAIL.blank.com.
正如你所看到的,DNS服務工作正常,接下去就讓我們動手來配置SendMail服務.redhat7.1默認安裝已經可以使SMTP服務在本機運行.你用netstat-nl可以看到所有后臺程序監聽的端口,注意這一行:127.0.0.1:25,這個表示SendMail服務已經在監聽本機的25(SMTP)端口了:
[root@testmail/root]#netstat-nl
ActiveInternetconnections(onlyservers)
ProtoRecv-QSend-QLocalAddressForeignAddressState
tcp000.0.0.0:327680.0.0.0:*LISTEN
tcp000.0.0.0:1110.0.0.0:*LISTEN
tcp000.0.0.0:220.0.0.0:*LISTEN
tcp00127.0.0.1:250.0.0.0:*LISTEN
udp000.0.0.0:327680.0.0.0:*
udp000.0.0.0:6670.0.0.0:*
udp000.0.0.0:1110.0.0.0:*
ActiveUNIXdomainsockets(onlyservers)
ProtoRefCntFlagsTypeStateI-NodePath
unix2[ACC]STREAMLISTENING1119/dev/gpmctl
unix2[ACC]STREAMLISTENING1172/tmp/.font-unix/fs7100
但這個僅僅表示e-mail服務器只接收你本機的郵件.為了解決這個問題,你必須修改配置,告訴SendMail去監聽你對外的網卡地址.假設你的服務器上只安裝了一塊網卡(eth0),并用ifconfig配置好你的ip地址.這個地址可以和DNS解析的地址不一樣,但你要保證DNS可以正確地解析郵件服務器的地址.這里我們使用的地址是一樣的(推薦):
[root@testmail/root]#ifconfig
eth0Linkencap:EthernetHWaddr00:60:97:DE:E9:99
inetaddr:192.168.100.134Bcast:192.168.100.255Mask:255.255.255.0
UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1
RXpackets:12421errors:0dropped:0overruns:0frame:0
TXpackets:5errors:0dropped:0overruns:0carrier:0
collisions:0txqueuelen:100
Interrupt:10Baseaddress:0xe000
loLinkencap:LocalLoopback
inetaddr:127.0.0.1Mask:255.0.0.0
UPLOOPBACKRUNNINGMTU:16436Metric:1
RXpackets:6errors:0dropped:0overruns:0frame:0
TXpackets:6errors:0dropped:0overruns:0carrier:0
collisions:0txqueuelen:0
可以看到這臺主機的eth0的ip地址是192.168.100.134.現在修改/etc/SendMail.cf文件來配置SendMail的監聽端口:
#SMTPdaemonoptions
ODaemonPortOptions=Port=smtp,Addr=127.0.0.1,Name=MTA
更改為
ODaemonPortOptions=Port=smtp,Addr=192.168.100.134,Name=MTA
改完后保存退出,并且重新啟動SendMail服務:
[root@testmail/root]#/etc/init.d/SendMailrestart
ShuttingdownSendMail:[OK]
StartingSendMail:[OK]
[root@testmail/root]#
現在可以用netstat-nl來查看是不是已經更改了.
[root@testmail/root]#netstat-nl
ActiveInternetconnections(onlyservers)
ProtoRecv-Qsend-QLocalAddressForeignAddressState
tcp000.0.0.0:327680.0.0.0:*LISTEN
tcp000.0.0.0:1110.0.0.0:*LISTEN
tcp000.0.0.0:220.0.0.0:*LISTEN
tcp00192.168.100.134:250.0.0.0:*LISTEN
udp000.0.0.0:327680.0.0.0:*
udp000.0.0.0:6670.0.0.0:*
udp000.0.0.0:1110.0.0.0:*
ActiveUNIXdomainsockets(onlyservers)
ProtoRefCntFlagsTypeStateI-NodePath
unix2[ACC]STREAMLISTENING1119/dev/gpmctl
unix2[ACC]STREAMLISTENING1172/tmp/.font-unix/fs7100
[root@testmail/root]#
如你所看到的,SendMail的監聽端口現在是eth0的ip地址:192.168.100.134了.
現在SendMail已經可以接收來自外部的連接了.我們還需要設定SendMail允許接收的域名.這個可以在/etc/mail/local-host-names文件中設定.就把域名輸入進去就可以了:
#local-host-names-includeallaliasesforyourmachinehere.blank.com保存退出后重新啟動SendMail服務:/etc/init.d/SendMailrestart.這樣SendMail就可以接收來自多個域的信件了.如果你需要再增加新的域,只有修改這個文件就可以了.
現在的e-mail服務器在本機上已經可以完全正常的工作.它已經可以接收來自任何地方的信件(允許的域),但如果想要發送和傳遞郵件,則必須在這臺電腦上執行.如果你的用戶都直接登錄到你的服務器上來發送郵件,則不需要更改任何配置,如果你希望大部分或者所有的用戶可以在遠程主機上使用該e-mail服務器,例如利用KMail和OutlookExpress等客戶端工具,則你必須更改配置來允許這些主機使用你的e-mail服務器.你需要在/etc/mail/access文件中加入下面一行,保存后運行makeaccess.db的命令來生成access.db文件.
blank.comRELAY
改完后的access文件應該是這樣的:
#Checkthe/usr/share/doc/SendMail-8.11.2/README.cffilefora
description
#oftheformatofthisfile.(searchforaccess_dbinthatfile)
#The/usr/share/doc/SendMail-8.11.2/README.cfispartofthe
SendMail-doc
#package.
#
#bydefaultweallowrelayingfromlocalhost...
localhost.localdomainRELAY
localhostRELAY
127.0.0.1RELAY
blank.comRELAY
然后運行:
[root@testmailmail]#makeaccess.db
[root@testmailmail]#
這個makeaccess.db命令把你的新的設定添加到SendMail的hash數據庫里.SendMail用它來判斷允許那些主機通過你的e-mail服務器來傳遞郵件.而且這樣還可以通過設定子網(例如:192.168)來限制該域.但你要注意,這樣設定就對外開放了,可能會有人發大量的垃圾信件來攻擊你的系統.
現在你可以收到所有來自外部的郵件.并且允許信賴的客戶在遠程傳遞信件.接下去你想要做的可能是如何在遠程收取這些信件.要達到這個目的,你需要安裝IMAP或者POP.redhat7.1默認安裝的時候并沒有安裝POP/IMAP,所以你需要安裝imap-2000-9rpm包.要查看這個包的安裝狀態,可以用下面的命令:rpm-aq grep-iimap.如果發現沒有安裝,那就把redhat7.1第二張安裝光盤放到光驅里.然后運行如下命令:
[root@testmailmail]#mount/dev/cdrom/mnt/cdrom
mount:blockdevice/dev/cdromiswrite-protected,mountingread-only
(SuccessfulMountofRead-OnlyMedia)
mount上光盤后運行這個命令來安裝這個包:rpm-Uvh/mnt/cdrom/RedHat/RPMS/imap-2000-9.i386.rpm.
[root@testmailmail]#rpm-Uvh/mnt/cdrom/RedHat/RPMS/imap-2000-9.i386.rpm
Preparing...###########################################[100%]
1:imap###########################################[100%]
再運行一次rpm-aq grep-iimap
IMAP包就羅列出來了。
[root@testmailmail]#rpm-aq grep-iimap
imap-2000-9
[root@testmailmail]#
當正確的包被安裝后你要打開POP3的連接端口,這需要修改/etc/xinetd.d/下面的ipop3文件,把disable的值改成no。這個文件大致是這樣的:
#default:off
#description:ThePOP3serviceallowsremoteuserstoaccesstheirmail
#usinganPOP3clientsuchasNetscapeCommunicator,mutt,
#orfetchmail.
servicepop3
{
socket_type=stream
wait=no
user=root
server=/usr/sbin/ipop3d
log_on_success+=USERID
log_on_failure+=USERID
disable=no
}
接下去重新啟動xinetd來是它生效:
[root@testmailxinetd.d]#/etc/init.d/xinetdrestart
Stoppingxinetd:[OK]
Startingxinetd:[OK]
[root@testmailxinetd.d]#
現在就可以發送一封測試郵件到你的e-mail服務器,并且用你熟悉的收信工具來收取這封信。應該是沒有問題的。
下面優化一下服務器的性能。或許你會收到這樣的抱怨,說是當客戶端程序運行在防火墻后面的話會發生連接pop端口速度變慢。
造成這個延時的原因是你的e-mail服務器初始一個IDENT會話來確認客戶端的身份。如果這個詢問沒有反應,那服務器就會在5秒后發出一個超時信號。這個值可以降低到1秒,從而減少IDENT產生影響。修改/etc/SendMail.cf文件,把timeout的值改成你想要的值。
#timeouts(manyofthese)
#OTimeout.ident=5s
changeto
OTimeout.ident=1s
現在你的e-mail服務器可以給你的用戶提供服務了。Linux將會為你的e-mail服務提供一個穩定的,******的平臺。如果想了解更多的關于SendMail的知識