AIX作業系統下Sendmail的使用

一、基本知識:

sendmail是在unix環境下使用最廣泛的郵件傳輸代理程式,sendmail郵件伺服器的特點是功能強大但配置複雜,sendmail的版本升級非常頻繁,可以通過telnet到主機的25號連線埠來判斷該主機使用的sendmail版本號。例如:

telnet xxx.xxx.xxx.xxx 25

220 xxx.xxx.xxx.xxx esmtp sendmail 8.12.1/8.12.1; thu, 22 aug 2002 10:33:21 +0800 (eat)

上述信息表明該主機運行的是sendmail8.12.1。版本號一般由被兩個圓點分開的三個數字組成。當前運行的絕大多數是sendmail 8.x.x。如果在sendmail伺服器上,可以運行sendmail –d0.4來查看版本情況,例如:version aix4.3/8.12.1

sendmail的啟動、停止和刷新,可以使用以下命令:

startsrc –s sendmail,也可以帶參數:startsrc –s sendmail -a "-bd -q30m"

stopsrc –s sendmail

refresh –s sendmail

查看sendmail的狀態:

lssrc –s sendmail

配置開機自動啟動sendmail

編輯/etc/rc.tcpip,找到start /usr/lib/sendmail這一行,如果被注釋掉了,取消注釋,找到並設定qpi參數,預設是30分鐘,即qpi=30m(s代表秒,m代表分鐘,h代表小時,d代表天,w代表星期)。m是預設。

手工啟動sendmail如:

sendmail –q15m

-q 後面的參數值同qpi。 sendmail是一個守護進程(daemon),是一個信息路由程式,sendmail通過syslogd daemon來記錄郵件系統的活動。要能夠做到這一點,/etc/syslog.conf 必須包括以下行:

mail.debug /var/spool/mqueue/log

如果/var/spool/mqueue/log不存在, touch /var/spool/mqueue/log

然後重起syslogd:refresh –s syslogd

郵件佇列目錄是/var/spool/mqueue,郵件佇列的內容可以由mailq或sendmail –bp列印出來。郵件佇列包含四類郵件佇列檔案:數據檔案、控制檔案、臨時檔案和抄本檔案。檔案的格式如下:

dfaa00312 數據檔案

qfaa00312 控制檔案

tfaa00312 臨時檔案

xfaa00312 抄本檔案

顯示郵件的統計信息:

touch /var/tmp/sendmail.st,此檔案必須先建立,否則無法用mailstats來查看統計信息.

使用郵件別名和轉發:

別名的定義放在/etc/aliases檔案中,舉例添加一個別名manager,在/etc/aliases中增加一行:

manager:caddy,zhang,

再對這個別名產生一個所有者,如果sendmail對這個別名傳送郵件有誤,它會發一個出錯信息給所有者。

在/etc/aliases中增加一行:

owner-manager:

用newaliases或 sendmail –bi重新編譯/etc/aliases,再重起sendmail,mail manager 就可以給caddy,zhang,發郵件了。

轉發郵件可以使用/etc/aliases,也可以使用$home/.forward。

使用/etc/aliases的例子:

tom:zhang,

這樣的話,tom收不到任何郵件,郵件發給zhang, ,如果tom也希望收到,上一行做如下修改:

tom:\tom,zhang,

自動刪除tom的郵件:

tom:/dev/null

使用$home/.forward的例子:

編輯該用戶(假設是tom)主目錄下的.forward檔案如下:

zhang,

如果tom也希望收到,上一行做如下修改:

\tom,zhang,

自動刪除tom的郵件:

/dev/null

對$home/.forward的修改一存檔就即刻生效,不象/etc/aliases還需重新編譯。

發郵件給本機用戶:mail tom

發郵件給本網路其它主機用戶:mail john@mars mars為主機名

給internet信箱用戶發郵件:

使用bnu或uucp發郵件:mail @internetsystem:uucpsystem!username

郵件的存儲:

系統信箱為/var/spool/mail目錄下,用戶一旦讀取就自動保存在$home/mbox目錄下,如果在產生郵件過程中被中斷,就將這些不完整的信息存放在$home/dead.letter。

二、配置sendmail通過smtp伺服器發internet郵件:

在tcp/ip網路中,常見的三種主機名解析方法是:dns、nis、etc/hosts,如果/etc/resolv.conf存在則先用dns解析,如果要改變解析順序,可以修改/etc/netsvc.conf 或變數nsorder(其優先權高於/etc/netsvc.conf )如在/etc/netsvc.conf 中可定義hosts=local,nis,bind,也可設定nsorder=local,nis

1.有dns的情況

sendmail 預設設定與dns一起工作,不需要對/etc/sendmail.cf做任何修改,設定好/etc/resolv.conf並能連通dns伺服器,就可以發internet郵件了。

2.使用smtp代理的情況

smtp的全稱即為“簡單郵件傳輸協定”,它負責郵件在兩台伺服器或客戶端之間進行交換。習慣上,如果源伺服器/客戶端將郵件通過smtp協定傳送到其目標伺服器上,我們將其稱之為“投遞”,否則稱之為“中繼”(relay)

smtp服務具有以下幾個顯著的特點:

1.smtp服務是匿名服務,並不要求確認發件人與收件人的真實身份;

2.smtp服務是明文服務,所有經過smtp傳輸的內容均以明文傳送。

使用smtp代理的情況下,需要對/etc/sendmail.cf做些修改,先要修改ds項,這是配置用來轉發郵件的主機。格式如下:

smtp主機的定義: ds

的主機名

或者

dssmtp:[xxx.xxx.xxx.xxx] àsmtp的ip地址

本機的定義: dw, dm和cw

sendmail 預設自動定義 dw (本機的主機名), dm (域名) 和 cw (主機別名) 。格式如下:

dwxxx //主機名緊挨著dw寫



cwlocalhost

配置完畢後重起sendmail服務,然後可以用sendmail –d0.4查看域名的情況和sendmail版本情況,傳送郵件可以用mail –v 顯示詳細的傳送信息。

如:

顯示信息如下:





發件人的名字就是:用戶名



250-auth login cram-md5 plain

250-auth=login cram-md5 plain

250-pipelining

250 8bitmime

>>> mail from:<用戶名

250 ok

>>> rcpt to:

250 ok

>>> data

354 go ahead

>>> . à結束符<回車><換行>.<回車><換行>

250 ok 1024473751 qp 1714



closing connection to [xxx.xxx.xxx.xxx]

>>> quit



其中>>>後面顯示的內容可以手工輸入,可以telnet xxx.xxx.xxx.xxx(smtp代理主機名) 25,一步一步輸入,測試整個郵件傳送過程,找到故障原因所在。