RedHat 9中配置sendmail伺服器

來源:互聯網
上載者:User
1.sendmail的安裝
若使用者在Redhat9預設安裝時已經安裝了sendmail 8.11服務.可忽略安裝過程,相關資料請查閱redhat CD裡的文檔. 
若沒有安裝,安裝sendmail服務,操作如下:
//查看是否安裝了sendmail
#rpm –qa|grep sendmail
//將RedHat Linux9的第一張安裝光碟片放入光碟機後掛載
#cd /mnt/cdrom
//進入光碟片的RedHat/RPMS目錄
#cd /mnt/cdrom/RedHat/RPMS
//安裝所需的軟體包
#rpm –ivh sendmail-8.12.8-4.i386.rpm
//將RedHat Linux9的第3張安裝光碟片放入光碟機後掛載
#cd /mnt/cdrom
//進入光碟片的RedHat/RPMS目錄
#cd /mnt/cdrom/RedHat/RPMS
//安裝所需的軟體包
#rpm –ivh sendmail-cf-8.12.8-4.i386.rpm
#rpm –ivh sendmail-doc-8.12.8-4.i386.rpm
//彈出光碟片
#cd;eject 

2.檢驗DNS SERVER的正反向解析是否成功
要使你的新e-mail伺服器正常工作,必須先解決DNS問題.把你的e-mail伺服器的主機名稱和ip地址加入到DNS中,並用nslookup來確認: 
# nslookup -sil mail.supermaster.com 
Server: 192.168.0.100 
Address: 192.168.0.100#53 
Name: mail.supermaster.com
Address: 192.168.0.100
同樣你也要試一下反向網域名稱解析,這個對防止郵件延遲有很重要的作用.現在大部分的郵件伺服器都是把反向網域名稱解析作為郵件傳送時 
認證的一部分.所以用的你ip地址來試一下反向網域名稱解析是否正確. 
# nslookup -sil 192.168.0.100 
Server: 192.168.0.100 
Address: 192.168.0.100#53 
100.0.168.192.in-addr.arpa name = mail.supermaster.com. 

3.配置sendmail服務

1).監聽原生smtp連接埠
redhat 9 預設安裝已經可以使SMTP服務在本機運行. 
你用netstat -nl可以看到所有背景程式監聽的連接埠,注意這一行:127.0.0.1:25,這個表示sendmail服務已經在監聽原生25(SMTP) 
連接埠了: 
# netstat -nl 
Active Internet connections (only servers) 
Proto Recv-Q Send-Q Local Address Foreign Address State 
tcp 0 0 0.0.0.0:32768 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 
udp 0 0 0.0.0.0:32768 0.0.0.0:* 
udp 0 0 0.0.0.0:667 0.0.0.0:* 
udp 0 0 0.0.0.0:111 0.0.0.0:* 
Active UNIX domain sockets (only servers) 
Proto RefCnt Flags Type State I-Node Path 
unix 2 [ ACC ] STREAM LISTENING 1119 /dev/gpmctl 
unix 2 [ ACC ] STREAM LISTENING 1172 /tmp/.font-unix/fs7100 
但這個僅僅表示e-mail伺服器只接收你原生郵件.為瞭解決這個問題,你必須修改配置,告訴sendmail去監聽你對外的網卡地址.

2).解決對外smtp連接埠的監聽
假設你的伺服器上安裝了一塊網卡(eth0),並用ifconfig配置好你的ip地址.這個地址可以和DNS解析的地址不一樣,但你要保證DNS可以正確 
地解析郵件伺服器的地址.這裡我們使用的地址是一樣的(推薦): 
# ifconfig 
eth0 Link encap:Ethernet HWaddr 00:60:97:DE:E9:99 
inet addr:192.168.0.100 Bcast:192.168.0.100 Mask:255.255.255.0 
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
RX packets:12421 errors:0 dropped:0 overruns:0 frame:0 
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:100 
Interrupt:10 Base address:0xe000 
lo Link encap:Local Loopback 
inet addr:127.0.0.1 Mask:255.0.0.0 
UP LOOPBACK RUNNING MTU:16436 Metric:1 
RX packets:6 errors:0 dropped:0 overruns:0 frame:0 
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:0 
可以看到這台主機的eth0的ip地址是192.168.0.100.現在修改/etc/mail/sendmail.cf檔案來配置sendmail的監聽連接埠: 
# SMTP daemon options 
O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA 
更改為 
O DaemonPortOptions=Port=smtp,Addr=192.168.0.100, Name=MTA 
改完後儲存退出,並且重新啟動sendmail服務: 
# service sendmail restart
Shutting down sendmail: [ OK ] 
Starting sendmail: [ OK ] 

現在可以用netstat -nl來查看是不是已經更改了.如你所看到的,sendmail的監聽連接埠現在是eth0的ip地址:192.168.0.100了. 
# netstat -nl 
Active Internet connections (only servers) 
Proto Recv-Q send-Q Local Address Foreign Address State 
tcp 0 0 0.0.0.0:32768 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 
tcp 0 0 192.168.100.134:25 0.0.0.0:* LISTEN 
udp 0 0 0.0.0.0:32768 0.0.0.0:* 
udp 0 0 0.0.0.0:667 0.0.0.0:* 
udp 0 0 0.0.0.0:111 0.0.0.0:* 
Active UNIX domain sockets (only servers) 
Proto RefCnt Flags Type State I-Node Path 
unix 2 [ ACC ] STREAM LISTENING 1119 /dev/gpmctl 
unix 2 [ ACC ] STREAM LISTENING 1172 /tmp/.font-unix/fs7100 

//////////////////////////////////////////////////////////////////////////////////////////// 

3).設定允許公認的網域名
現在sendmail已經可以接收來自外部的串連了.我們還需要設定sendmail允許接收的網域名稱.這個可以在/etc/mail/local-host-names 
檔案中設定.就把網域名稱輸入進去就可以了: 
# local-host-names - include all aliases for your machine here. 
supermaster.com 
儲存退出後重新啟動sendmail服務:/etc/init.d/sendmail restart .這樣sendmail就可以接收來自多個域的信件了. 如果你需要再增加新的域,只有修改這個檔案就可以了. 

4).client 端的設定
現在的e-mail伺服器在本機上已經可以完全正常的工作.它已經可以接收來自任何地方的信件(允許的網域),但如果想要發送和傳遞郵 件,則必須在這台電腦上執行.如果你的使用者都直接登入到你的伺服器上來發送郵件,則不需要更改任何配置,如果你希望大部分或者所有的使用者可以在遠程主機上使用該e-mail伺服器,例如利用KMail和Outlook Express及Mozilla Mail等用戶端工具,則你必須更改配置來允許這些主機使 
用你的e-mail伺服器.你需要在/etc/mail/access檔案中加入下面一行,儲存後運行make access.db 的命令來產生access.db檔案. 
supermaster.com RELAY 
改完後的access檔案應該是這樣的: 
# Check the /usr/share/doc/ sendmail-8.12.8-4/README.cf file for a 
description 
# of the format of this file. (search for access_db in that file) 
# The /usr/share/doc/ sendmail-8.12.8-4/README.cf is part of the 
sendmail-doc 
# package. 

# by default we allow relaying from localhost... 
localhost.localdomain RELAY 
localhost RELAY 
127.0.0.1 RELAY 
supermaster.com RELAY 
然後運行: 
# make access.db 

這個make access.db命令把你的新的設定添加到sendmail的hash資料庫裡.sendmail用它來判斷允許那些主機通過你的e-mail伺服器來傳遞郵件.而且這樣還可以通過設定子網(例如:192.168)來限制該域.但你要注意,這樣設定就對外開放了,可能會有人發大量的垃圾 信件來攻擊你的系統. 
現在你可以收到所有來自外部的郵件.並且允許信賴的客戶在遠程傳遞信件.接下去你想要做的可能是如何在遠程收取這些信件.要達到 
這個目的,你需要安裝IMAP 或者 POP. redhat 9預設安裝的時候並沒有安裝POP/IMAP,所以你需要安裝imap-2000-9 rpm包. 
要查看這個包的安裝狀態,可以用下面的命令:rpm -aq | grep -i imap.如果發現沒有安裝,那就把redhat 9第二張安裝光碟片 
放到光碟機裡.然後運行如下命令: 
# mount /dev/cdrom /mnt/cdrom 
mount: block device /dev/cdrom is write-protected, mounting read-only 
(Successful Mount of Read-Only Media) 
mount上光碟片後運行這個命令來安裝這個包:rpm -Uvh /mnt/cdrom/RedHat/RPMS/imap-2000-9.i386.rpm. 
# rpm -Uvh /mnt/cdrom/RedHat/RPMS/imap-2000-9.i386.rpm 
Preparing... ########################################### [100%] 
1:imap ########################################### [100%] 
再運行一次 rpm -aq | grep -i imap 
IMAP 包就羅列出來了. 
# rpm -aq | grep -i imap 
imap-2000-9 

5).ipop3的設定

當正確的包被安裝後你要開啟POP3的串連連接埠,這需要修改/etc/xinetd.d/下面的ipop3檔案,把disable的值改成yes.這個檔案 
大致是這樣的: 
# default: off 
# description: The POP3 service allows remote users to access their mail 
# using an POP3 client such as Netscape Communicator, mutt, 
# or fetchmail. 
service pop3 

socket_type = stream 
wait = no 
user = root 
server = /usr/sbin/ipop3d 
log_on_success += USERID 
log_on_failure += USERID 
disable = no 


接下去重新啟動xinetd來是它生效: 
# service xinetd restart
Stopping xinetd: [ OK ] 
Starting xinetd: [ OK ] 

建議將ipop3 設定成自動啟動,操作如下:
#redhat-config-services或setup或ntsysv
OK,至此sendmail的配置完成,發送一封測試郵件到你的e-mail伺服器,並且用你熟悉的收信工具來收取這封信.筆者用的是Mozilla Mail進行測試,成功 。

4.sendmail的效能最佳化
或許你會收到這樣的抱怨,說是當用戶端程式運行在防火牆後面的話會發生串連pop連接埠速度變慢. 
造成這個延時的原因是你的e-mail伺服器初始一個IDENT會話來確認用戶端的身份.如果這個詢問沒有反應,那伺服器就會在5秒後發出 
一個逾時訊號.這個值可以降低到1秒,從而減少IDENT產生影響.修改/etc/mail/sendmail.cf檔案,把timeout的值改成你想要的值. 
# timeouts (many of these) 
#O Timeout.ident=5s 
change to 
O Timeout.ident=1s 
現在你的e-mail伺服器可以給你的使用者提供服務了.當然還有更多的配置可以用來提高伺服器效能,在這篇文章中就不多提了. 
Linux將會為你的e-mail服務提供一個穩定的,高效的平台.如果想瞭解更多的關於sendmail的知識,請訪www.sendmail.org. 
註:筆者建議大家在第一測試sendmail時,把fireware 服務關閉。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.