| 導購 | 订阅 | 在线投稿
分享
 
 
 

用Sendmail配置你的第一台e-mail服務器

來源:互聯網  2008-05-31 00:09:56  評論

隨著互聯網的發展,e-mail迅速成長成爲主要的網絡信息傳遞工具。面對大量要求能夠快速,廉價,和高可信賴的e-mail需求,很多公司和個人都把linux提供的服務作爲滿足這些需求的解決方案。

SendMail最初是1979年由Eric Allman編寫而成。它起先運行在BSD 4.0平台上。但這個程序不夠靈活,每次編譯的時候都需要重新配置。隨著TCP協議和其他方面的發展,它本身的不靈活性已經明顯不能滿足日益增長的需求。Eric Allman決定重新編寫SendMail,從而誕生了現在的MTA標准。這是對SendMail的簡短介紹.我們這篇文章主要是示範如何在一台新裝的redhat 7.1上用配置SendMail8.11.2 服務,構架你的e-mail服務器.

redhat7.1默認安裝的時間已經安裝了SendMail 8.11服務.因爲redhat安裝使用都非常的簡單,我們這裏就忽略安裝過程,相關資料請查閱redhat CD裏的文檔.要使你的新e-mail服務器正常工作,必須先解決DNS問題.把你的e-mail服務器的主機名和ip地址加入到DNS中,並用nslookup來確認:

[root@testmail /root]# nslookup -sil testmail.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 -sil 192.168.100.134

Server: 192.168.100.1

Address: 192.168.100.1#53

134.100.168.192.in-addr.arpa name = TESTMAIL.blank.com.

正如你所看到的,DNS服務工作正常,接下去就讓我們動手來配置SendMail服務.redhat 7.1 默認安裝已經可以使SMTP服務在本機運行.

你用netstat -nl可以看到所有後台程序監聽的端口,注意這一行:127.0.0.1:25,這個表示SendMail服務已經在監聽本機的25(SMTP)端口了:

[root@testmail /root]# 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去監聽你對外的網卡地址.假設你的服務器上只安裝了一塊網卡(eth0),並用ifconfig配置好你的ip地址.這個地址可以和DNS解析的地址不一樣,但你要保證DNS可以正確地解析郵件服務器的地址.這裏我們使用的地址是一樣的(推薦):

[root@testmail /root]# ifconfig

eth0 Link encap:Ethernet HWaddr 00:60:97:DE:E9:99

inet addr:192.168.100.134 Bcast:192.168.100.255 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.100.134.現在修改/etc/SendMail.cf文件來配置SendMail的監聽端口:

# SMTP daemon options

O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA

更改爲

O DaemonPortOptions=Port=smtp,Addr=192.168.100.134, Name=MTA

改完後保存退出,並且重新啓動SendMail服務:

[root@testmail /root]# /etc/init.d/SendMail restart

Shutting down SendMail: [ OK ]

Starting SendMail: [ OK ]

[root@testmail /root]#

現在可以用netstat -nl來查看是不是已經更改了.如你所看到的,SendMail的監聽端口現在是eth0的ip地址:192.168.100.134了.

[root@testmail /root]# 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

[root@testmail /root]#

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

現在SendMail已經可以接收來自外部的連接了.我們還需要設定SendMail允許接收的域名.這個可以在/etc/mail/local-host-names文件中設定.就把域名輸入進去就可以了:

# local-host-names - include all aliases for your machine here.

blank.com

保存退出後重新啓動SendMail服務:/etc/init.d/SendMail restart .這樣SendMail就可以接收來自多個域的信件了.

如果你需要再增加新的域,只有修改這個文件就可以了.

現在的e-mail服務器在本機上已經可以完全正常的工作.它已經可以接收來自任何地方的信件(允許的域),但如果想要發送和傳遞郵件,則必須在這台電腦上執行.如果你的用戶都直接登錄到你的服務器上來發送郵件,則不需要更改任何配置,如果你希望大部分或者所有的用戶可以在遠程主機上使用該e-mail服務器,例如利用KMail和Outlook Express等客戶端工具,則你必須更改配置來允許這些主機使用你的e-mail服務器.你需要在/etc/mail/access文件中加入下面一行,保存後運行make access.db 的命令來生成access.db文件.

blank.com RELAY

改完後的access文件應該是這樣的:

# Check the /usr/share/doc/SendMail-8.11.2/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.11.2/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

blank.com RELAY

然後運行:

[root@testmail mail]# make access.db

[root@testmail mail]#

這個make access.db命令把你的新的設定添加到SendMail的hash數據庫裏.SendMail用它來判斷允許那些主機通過你的e-mail服務器來傳遞郵件.而且這樣還可以通過設定子網(例如:192.168)來限制該域.但你要注意,這樣設定就對外開放了,可能會有人發大量的垃圾信件來攻擊你的系統.

現在你可以收到所有來自外部的郵件.並且允許信賴的客戶在遠程傳遞信件.接下去你想要做的可能是如何在遠程收取這些信件.要達到這個目的,你需要安裝IMAP 或者 POP. redhat 7.1 默認安裝的時候並沒有安裝POP/IMAP,所以你需要安裝imap-2000-9 rpm包.要查看這個包的安裝狀態,可以用下面的命令:rpm -aq | grep -i imap.如果發現沒有安裝,那就把redhat 7.1第二張安裝光盤放到光驅裏.然後運行如下命令:

[root@testmail mail]# 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.

[root@testmail mail]# rpm -Uvh /mnt/cdrom/RedHat/RPMS/imap-2000-9.i386.rpm

Preparing... ########################################### [100%]

1:imap ########################################### [100%]

再運行一次 rpm -aq | grep -i imap

IMAP 包就羅列出來了。

[root@testmail mail]# rpm -aq | grep -i imap

imap-2000-9

[root@testmail mail]#

當正確的包被安裝後你要打開POP3的連接端口,這需要修改/etc/xinetd.d/下面的ipop3文件,把disable的值改成no。這個文件大致是這樣的:

# 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來是它生效:

[root@testmail xinetd.d]# /etc/init.d/xinetd restart

Stopping xinetd: [ OK ]

Starting xinetd: [ OK ]

[root@testmail xinetd.d]#

現在就可以發送一封測試郵件到你的e-mail服務器,並且用你熟悉的收信工具來收取這封信。應該是沒有問題的。

下面優化一下服務器的性能。或許你會收到這樣的抱怨,說是當客戶端程序運行在防火牆後面的話會發生連接pop端口速度變慢。

造成這個延時的原因是你的e-mail服務器初始一個IDENT會話來確認客戶端的身份。如果這個詢問沒有反應,那服務器就會在5秒後發出一個超時信號。這個值可以降低到1秒,從而減少IDENT産生影響。修改/etc/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.

,

  隨著互聯網的發展,e-mail迅速成長成爲主要的網絡信息傳遞工具。面對大量要求能夠快速,廉價,和高可信賴的e-mail需求,很多公司和個人都把linux提供的服務作爲滿足這些需求的解決方案。   SendMail最初是1979年由Eric Allman編寫而成。它起先運行在BSD 4.0平台上。但這個程序不夠靈活,每次編譯的時候都需要重新配置。隨著TCP協議和其他方面的發展,它本身的不靈活性已經明顯不能滿足日益增長的需求。Eric Allman決定重新編寫SendMail,從而誕生了現在的MTA標准。這是對SendMail的簡短介紹.我們這篇文章主要是示範如何在一台新裝的redhat 7.1上用配置SendMail8.11.2 服務,構架你的e-mail服務器. redhat7.1默認安裝的時間已經安裝了SendMail 8.11服務.因爲redhat安裝使用都非常的簡單,我們這裏就忽略安裝過程,相關資料請查閱redhat CD裏的文檔.要使你的新e-mail服務器正常工作,必須先解決DNS問題.把你的e-mail服務器的主機名和ip地址加入到DNS中,並用nslookup來確認:   [root@testmail /root]# nslookup -sil testmail.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 -sil 192.168.100.134   Server: 192.168.100.1   Address: 192.168.100.1#53   134.100.168.192.in-addr.arpa name = TESTMAIL.blank.com.   正如你所看到的,DNS服務工作正常,接下去就讓我們動手來配置SendMail服務.redhat 7.1 默認安裝已經可以使SMTP服務在本機運行.   你用netstat -nl可以看到所有後台程序監聽的端口,注意這一行:127.0.0.1:25,這個表示SendMail服務已經在監聽本機的25(SMTP)端口了:   [root@testmail /root]# 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去監聽你對外的網卡地址.假設你的服務器上只安裝了一塊網卡(eth0),並用ifconfig配置好你的ip地址.這個地址可以和DNS解析的地址不一樣,但你要保證DNS可以正確地解析郵件服務器的地址.這裏我們使用的地址是一樣的(推薦):   [root@testmail /root]# ifconfig   eth0 Link encap:Ethernet HWaddr 00:60:97:DE:E9:99   inet addr:192.168.100.134 Bcast:192.168.100.255 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.100.134.現在修改/etc/SendMail.cf文件來配置SendMail的監聽端口:   # SMTP daemon options   O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA   更改爲   O DaemonPortOptions=Port=smtp,Addr=192.168.100.134, Name=MTA   改完後保存退出,並且重新啓動SendMail服務:   [root@testmail /root]# /etc/init.d/SendMail restart   Shutting down SendMail: [ OK ]   Starting SendMail: [ OK ]   [root@testmail /root]#   現在可以用netstat -nl來查看是不是已經更改了.如你所看到的,SendMail的監聽端口現在是eth0的ip地址:192.168.100.134了.   [root@testmail /root]# 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   [root@testmail /root]#   ///////////////////////////////////////////////////////////////   現在SendMail已經可以接收來自外部的連接了.我們還需要設定SendMail允許接收的域名.這個可以在/etc/mail/local-host-names文件中設定.就把域名輸入進去就可以了:   # local-host-names - include all aliases for your machine here.   blank.com   保存退出後重新啓動SendMail服務:/etc/init.d/SendMail restart .這樣SendMail就可以接收來自多個域的信件了.   如果你需要再增加新的域,只有修改這個文件就可以了.   現在的e-mail服務器在本機上已經可以完全正常的工作.它已經可以接收來自任何地方的信件(允許的域),但如果想要發送和傳遞郵件,則必須在這台電腦上執行.如果你的用戶都直接登錄到你的服務器上來發送郵件,則不需要更改任何配置,如果你希望大部分或者所有的用戶可以在遠程主機上使用該e-mail服務器,例如利用KMail和Outlook Express等客戶端工具,則你必須更改配置來允許這些主機使用你的e-mail服務器.你需要在/etc/mail/access文件中加入下面一行,保存後運行make access.db 的命令來生成access.db文件.   blank.com RELAY   改完後的access文件應該是這樣的:   # Check the /usr/share/doc/SendMail-8.11.2/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.11.2/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   blank.com RELAY   然後運行:   [root@testmail mail]# make access.db   [root@testmail mail]#   這個make access.db命令把你的新的設定添加到SendMail的hash數據庫裏.SendMail用它來判斷允許那些主機通過你的e-mail服務器來傳遞郵件.而且這樣還可以通過設定子網(例如:192.168)來限制該域.但你要注意,這樣設定就對外開放了,可能會有人發大量的垃圾信件來攻擊你的系統.   現在你可以收到所有來自外部的郵件.並且允許信賴的客戶在遠程傳遞信件.接下去你想要做的可能是如何在遠程收取這些信件.要達到這個目的,你需要安裝IMAP 或者 POP. redhat 7.1 默認安裝的時候並沒有安裝POP/IMAP,所以你需要安裝imap-2000-9 rpm包.要查看這個包的安裝狀態,可以用下面的命令:rpm -aq | grep -i imap.如果發現沒有安裝,那就把redhat 7.1第二張安裝光盤放到光驅裏.然後運行如下命令:   [root@testmail mail]# 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.   [root@testmail mail]# rpm -Uvh /mnt/cdrom/RedHat/RPMS/imap-2000-9.i386.rpm   Preparing... ########################################### [100%]   1:imap ########################################### [100%]   再運行一次 rpm -aq | grep -i imap   IMAP 包就羅列出來了。   [root@testmail mail]# rpm -aq | grep -i imap   imap-2000-9   [root@testmail mail]#  當正確的包被安裝後你要打開POP3的連接端口,這需要修改/etc/xinetd.d/下面的ipop3文件,把disable的值改成no。這個文件大致是這樣的:   # 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來是它生效:   [root@testmail xinetd.d]# /etc/init.d/xinetd restart   Stopping xinetd: [ OK ]   Starting xinetd: [ OK ]   [root@testmail xinetd.d]#   現在就可以發送一封測試郵件到你的e-mail服務器,並且用你熟悉的收信工具來收取這封信。應該是沒有問題的。   下面優化一下服務器的性能。或許你會收到這樣的抱怨,說是當客戶端程序運行在防火牆後面的話會發生連接pop端口速度變慢。   造成這個延時的原因是你的e-mail服務器初始一個IDENT會話來確認客戶端的身份。如果這個詢問沒有反應,那服務器就會在5秒後發出一個超時信號。這個值可以降低到1秒,從而減少IDENT産生影響。修改/etc/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. ,
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有