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

SendMail上手指南

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

爲了能從網絡上接收SMTP電子郵件,我們必須在Linux系統上運行Sendmail守護進程。命令是;

# /etc/rc.d/init.d/sendmail start

爲了方便起見,我們應該使用ntsysv命令把Sendmail守護進程加到引導程序中,在多數情況下,安裝時Linux就已經自動將Sendmail包含在引導程序中了。這樣每次開機時,Linux都會啓動Sendmail守護進程並偵聽端口25,處理進入的郵件。

Sendmail的配置文件是/etc/sendmail.cf文件,它包含大部分的Sendmail配置的信息,包括在用戶郵件程序和郵件傳輸程序之間爲郵件選擇路由所需的信息。Sendmail.cf文件有三個主要功能:

·定義Sendmail環境。

·按照接收郵件程序的語法重寫地址。

·將地址映射成傳送郵件所需的指令。

執行所有這些功能需要若幹命令。一些宏定義和可選用的命令可定義其環境,一些重寫規則可以重寫電子郵件的地址,一些郵件程序定義可定義傳送郵件所必需的指令。

sendmail.cf文件很大,看上去可複雜,但我們需要改動的地方很少。主要在local info中做文章。請在文件中尋找「Cw」,原來産生的cf 文件,Cw應是:

Cwlocalhost

# file containing names of hosts for which we receive email

# Fw/etc/sendmail.cw

請在localhost之後加上我們那一台機器所有可能用來當收信地址的主機的名字。例如,在局域網絡Virtual Brewery中的一台機器叫:vlager.vbrew.com,而且也叫gopher.vbrew.com,而該網絡的管理員希望這一台機器的這兩個名字都能收信,那麽他需要這樣修改sendmail.cf文件:

Cwlocalhost vlager.vbrew.com gopher.vbrew.com

上面只是一種簡便的方法,如果系統中運行著DNS,我們可以通過DNS來解析主機別名(如下所示),而不用加上主機別名gopher.vbrew.com。如果沒有運行DNS,那麽必須將本機器的所有名字都寫上。

如果用作郵件服務器的主機有多個名字(hostname),例如:

vlager IN A 191.72.1.1

gopher IN CNAME vlager

那麽我們可以不必在Cw上標明,系統會透過DNS 找到它的別名

如果一台機器有多個名字,但是每一個別名是用A record 建立的,例如:

vlager IN A 191.72.1.1

gopher IN A 191.72.1.1

在這種情況下【一定】要記得在Cw後寫上所要收信主機的名字。如果忘記了,那麽從外面寄來的以別名爲地址的信件將無法正常接收,機器會抱怨:

「Local configuration error」

例如,如果在sendmail.cf中的Cw這行是Cw vlager.vbrew.com,那麽局域網Virtual Brewery中的用戶將無法使用郵件地址username@gopher.vbrew.com而只能用username@ vlager.vbrew.com,否則將出現上述錯誤。

如果一台機器有多interface,各interface有其本身的名字,而且要收信。這種情況也要在Cw之後寫明所有要收信的hostname。

在我們的例子中F命令是作爲注釋處理的,如果去掉它前面的「#」號,那麽sendmail將從/etc/sendmail.cw中讀取主機的別名,並將別名儲存在類w中。將F命令做注釋處理,並讓sendmail在內部定義別名這是一種最常用的方法。

打開/etc/mail/access文件時,會看到(注意一些系統的access文件不再/etc/mail下,如找不到請用whereis查找或檢查是否安裝正常):

# Check the /usr/doc/sendmail-8.9.3/README.cf file for a description

# of the format of this file. (search for access_db in that file)

# The /usr/doc/sendmail-8.9.3/README.cf is part of the sendmail-doc

# package.

#

# by default we allow relaying from localhost...

localhost.localdomain RELAY

localhost RELAY

如果我們主機的IP地址是191.72.1.1的話,就應該在最後一行加上它的記錄項,這樣,我們修改後的文件的最後三行應是:

localhost.localdomain RELAY

localhost RELAY

191.72.1.1 RELAY

加上這句話我們就可以用sendmail發送接收mail了。但是如果我們想讓別人也可以使用sendmail的話,而他的IP是202.168.25.22,這樣就在在最後一行加入他的主機的記錄項,這時文件的最後四行應是:

localhost.localdomain RELAY

localhost RELAY

191.72.1.1 RELAY

202.168.25.22 RELAY

當我們考慮到多用戶的時候,sendmail允許我們添入整個B類或C類地址,其格式如下:

localhost.localdomain RELAY

localhost RELAY

191.72 RELAY

202.168.25 RELAY

這樣,我們就是把整個網絡都加入的sendmail中,這個地址中的用戶,如果在我們的系統裏有賬號的話,可以使用sendmail收發信件了。

Linux還允許我們設置郵局協議(POP)郵件服務器,POP協議分兩個版本POP2和POP3,很顯然POP3是新版本的郵局協議,現在Internet網上主要是POP3協議。POP3並不需要我們來配置,RedHat已經爲我們做好了這一工作。我們只需要修改一下 /etc/inetd.conf文件,確保POP3能正常工作即可:

# vi /etc/inetd.conf

查找到:

# pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d

把這一行前面的「#」號刪掉。然後修改/etc/services文件:

# vi /etc/services

在該文件中查找到

#pop-3 110/tcp # POP version 3

同樣,將這一行前面的注釋符「#」號刪掉。之後使用下面的命令重新啓動inetd和sendmail守護進程:

# /etc/rc.d/init.d/sendmail restart

# /etc/rc.d/init.d/inetd restart

在我們配置完sendmail後,可以運行以下的命令來檢查目錄的讀寫權限以檢查潛在的安全漏洞。

# sendmail –b –vi

這時,sendmail將開始初始化alias數據,如果在屏幕上回顯:

WARNING: writable directory /etc

WARNING: writable directory /usr/spool/mqueue

那麽這個目錄列出了不適當的寫特權,應該使用chmod和 chown命令以避免多方面的的安全攻擊。一般我們需要對如下目錄運行chmod和chown命令:

# chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

# chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

sendmail 的有一些參數可以用于驗證地址處理的結果,以確保其新配置的合理性。一旦認爲配置可以正常工作了,我們就可以選擇各個站點上的朋友,並將郵件發送給他們。發送時使用-v參數就可以顯示郵件傳輸的各個細節和兩個站點之間進行SMTP交換的全過程。下面是一個測試的例子,使用的文件是test.cf,一旦測試成功,我們就可以將這個文件拷貝到/etc下並可以改名爲sendmail.cf。

# sendmail –Ctest.cf –t –v

To:lack@vlager.vbrew.com

From:janet

Subject:Test for sendmail

Lack,please reply if you see this,Thanks.

^D

lark@ vlager.vbrew.com…..Connecting to vlager.vbrew.com via tcp…

Trying 191.72.1.1 ….connected.

220 VLAGER.VBREW.COM on Web, 30 Sep 99 16:23:23 CST

HELLO maths.groucho.edu

250 VLAGER.VBREW.COM is my domain name

MAIL From:

250 OK

DATE

354 Enter mail body, End by new line with just a 『.』

.

250 Mail Delivered

QUIT

221 VLAGER.VBREW.COM closing connection

lack@vlager.vbrew.com…sent

我們在CTRL-D之前輸入所有的內容,而sendmail則顯示^D之後的內容。通過對sendmail的測試,我們就可以發現潛在的配置問題,並使用sendmail提供的一些附加查錯工具解決這些問題。

,

爲了能從網絡上接收SMTP電子郵件,我們必須在Linux系統上運行Sendmail守護進程。命令是; # /etc/rc.d/init.d/sendmail start 爲了方便起見,我們應該使用ntsysv命令把Sendmail守護進程加到引導程序中,在多數情況下,安裝時Linux就已經自動將Sendmail包含在引導程序中了。這樣每次開機時,Linux都會啓動Sendmail守護進程並偵聽端口25,處理進入的郵件。 Sendmail的配置文件是/etc/sendmail.cf文件,它包含大部分的Sendmail配置的信息,包括在用戶郵件程序和郵件傳輸程序之間爲郵件選擇路由所需的信息。Sendmail.cf文件有三個主要功能: ·定義Sendmail環境。 ·按照接收郵件程序的語法重寫地址。 ·將地址映射成傳送郵件所需的指令。 執行所有這些功能需要若幹命令。一些宏定義和可選用的命令可定義其環境,一些重寫規則可以重寫電子郵件的地址,一些郵件程序定義可定義傳送郵件所必需的指令。 sendmail.cf文件很大,看上去可複雜,但我們需要改動的地方很少。主要在local info中做文章。請在文件中尋找「Cw」,原來産生的cf 文件,Cw應是: Cwlocalhost # file containing names of hosts for which we receive email # Fw/etc/sendmail.cw 請在localhost之後加上我們那一台機器所有可能用來當收信地址的主機的名字。例如,在局域網絡Virtual Brewery中的一台機器叫:vlager.vbrew.com,而且也叫gopher.vbrew.com,而該網絡的管理員希望這一台機器的這兩個名字都能收信,那麽他需要這樣修改sendmail.cf文件: Cwlocalhost vlager.vbrew.com gopher.vbrew.com 上面只是一種簡便的方法,如果系統中運行著DNS,我們可以通過DNS來解析主機別名(如下所示),而不用加上主機別名gopher.vbrew.com。如果沒有運行DNS,那麽必須將本機器的所有名字都寫上。 如果用作郵件服務器的主機有多個名字(hostname),例如: vlager IN A 191.72.1.1 gopher IN CNAME vlager 那麽我們可以不必在Cw上標明,系統會透過DNS 找到它的別名 如果一台機器有多個名字,但是每一個別名是用A record 建立的,例如: vlager IN A 191.72.1.1 gopher IN A 191.72.1.1 在這種情況下【一定】要記得在Cw後寫上所要收信主機的名字。如果忘記了,那麽從外面寄來的以別名爲地址的信件將無法正常接收,機器會抱怨: 「Local configuration error」 例如,如果在sendmail.cf中的Cw這行是Cw vlager.vbrew.com,那麽局域網Virtual Brewery中的用戶將無法使用郵件地址username@gopher.vbrew.com而只能用username@ vlager.vbrew.com,否則將出現上述錯誤。 如果一台機器有多interface,各interface有其本身的名字,而且要收信。這種情況也要在Cw之後寫明所有要收信的hostname。 在我們的例子中F命令是作爲注釋處理的,如果去掉它前面的「#」號,那麽sendmail將從/etc/sendmail.cw中讀取主機的別名,並將別名儲存在類w中。將F命令做注釋處理,並讓sendmail在內部定義別名這是一種最常用的方法。 打開/etc/mail/access文件時,會看到(注意一些系統的access文件不再/etc/mail下,如找不到請用whereis查找或檢查是否安裝正常): # Check the /usr/doc/sendmail-8.9.3/README.cf file for a description # of the format of this file. (search for access_db in that file) # The /usr/doc/sendmail-8.9.3/README.cf is part of the sendmail-doc # package. # # by default we allow relaying from localhost... localhost.localdomain RELAY localhost RELAY 如果我們主機的IP地址是191.72.1.1的話,就應該在最後一行加上它的記錄項,這樣,我們修改後的文件的最後三行應是: localhost.localdomain RELAY localhost RELAY 191.72.1.1 RELAY 加上這句話我們就可以用sendmail發送接收mail了。但是如果我們想讓別人也可以使用sendmail的話,而他的IP是202.168.25.22,這樣就在在最後一行加入他的主機的記錄項,這時文件的最後四行應是: localhost.localdomain RELAY localhost RELAY 191.72.1.1 RELAY 202.168.25.22 RELAY 當我們考慮到多用戶的時候,sendmail允許我們添入整個B類或C類地址,其格式如下: localhost.localdomain RELAY localhost RELAY 191.72 RELAY 202.168.25 RELAY 這樣,我們就是把整個網絡都加入的sendmail中,這個地址中的用戶,如果在我們的系統裏有賬號的話,可以使用sendmail收發信件了。 Linux還允許我們設置郵局協議(POP)郵件服務器,POP協議分兩個版本POP2和POP3,很顯然POP3是新版本的郵局協議,現在Internet網上主要是POP3協議。POP3並不需要我們來配置,RedHat已經爲我們做好了這一工作。我們只需要修改一下 /etc/inetd.conf文件,確保POP3能正常工作即可: # vi /etc/inetd.conf 查找到: # pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d 把這一行前面的「#」號刪掉。然後修改/etc/services文件: # vi /etc/services 在該文件中查找到 #pop-3 110/tcp # POP version 3 同樣,將這一行前面的注釋符「#」號刪掉。之後使用下面的命令重新啓動inetd和sendmail守護進程: # /etc/rc.d/init.d/sendmail restart # /etc/rc.d/init.d/inetd restart 在我們配置完sendmail後,可以運行以下的命令來檢查目錄的讀寫權限以檢查潛在的安全漏洞。 # sendmail –b –vi 這時,sendmail將開始初始化alias數據,如果在屏幕上回顯: WARNING: writable directory /etc WARNING: writable directory /usr/spool/mqueue 那麽這個目錄列出了不適當的寫特權,應該使用chmod和 chown命令以避免多方面的的安全攻擊。一般我們需要對如下目錄運行chmod和chown命令: # chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue # chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue sendmail 的有一些參數可以用于驗證地址處理的結果,以確保其新配置的合理性。一旦認爲配置可以正常工作了,我們就可以選擇各個站點上的朋友,並將郵件發送給他們。發送時使用-v參數就可以顯示郵件傳輸的各個細節和兩個站點之間進行SMTP交換的全過程。下面是一個測試的例子,使用的文件是test.cf,一旦測試成功,我們就可以將這個文件拷貝到/etc下並可以改名爲sendmail.cf。 # sendmail –Ctest.cf –t –v To:lack@vlager.vbrew.com From:janet Subject:Test for sendmail Lack,please reply if you see this,Thanks. ^D lark@ vlager.vbrew.com…..Connecting to vlager.vbrew.com via tcp… Trying 191.72.1.1 ….connected. 220 VLAGER.VBREW.COM on Web, 30 Sep 99 16:23:23 CST HELLO maths.groucho.edu 250 VLAGER.VBREW.COM is my domain name MAIL From: 250 OK DATE 354 Enter mail body, End by new line with just a 『.』 . 250 Mail Delivered QUIT 221 VLAGER.VBREW.COM closing connection lack@vlager.vbrew.com…sent 我們在CTRL-D之前輸入所有的內容,而sendmail則顯示^D之後的內容。通過對sendmail的測試,我們就可以發現潛在的配置問題,並使用sendmail提供的一些附加查錯工具解決這些問題。 ,
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有