一、基本知識:
sendmail是在unix環(huán)境下使用最廣泛的郵件傳輸代理程序,sendmail郵件服務(wù)器的特點是功能強大但配置復(fù)雜,sendmail的版本升級非常頻繁,可以通過telnet到主機的25號端口來判斷該主機使用的sendmail版本號。例如:
telnet ... 25
220 ... esmtp sendmail 8.12.1/8.12.1; thu, 22 aug 2002 10:33:21 +0800 (eat)
上述信息表明該主機運行的是sendmail8.12.1。版本號一般由被兩個圓點分開的三個數(shù)字組成。當(dāng)前運行的絕大多數(shù)是sendmail 8.x.x。如果在sendmail服務(wù)器上,可以運行sendmail –d0.4來查看版本情況,例如:version aix4.3/8.12.1
sendmail的啟動、停止和刷新,可以使用以下命令:
startsrc –s sendmail,也可以帶參數(shù):startsrc –s sendmail -a "-bd -q30m"
stopsrc –s sendmail
refresh –s sendmail
查看sendmail的狀態(tài):
lssrc –s sendmail
配置開機自動啟動sendmail
編輯/etc/rc.tcpip,找到start /usr/lib/sendmail這一行,如果被注釋掉了,取消注釋,找到并設(shè)置qpi參數(shù),缺省是30分鐘,即qpi=30m(s代表秒,m代表分鐘,h代表小時,d代表天,w代表星期)。m是缺省。
手工啟動sendmail如:
sendmail –q15m
-q 后面的參數(shù)值同qpi。 sendmail是一個守護(hù)進(jìn)程(daemon),是一個信息路由程序,sendmail通過syslogd daemon來記錄郵件系統(tǒng)的活動。要能夠做到這一點,/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,郵件隊列的內(nèi)容可以由mailq或sendmail –bp打印出來。郵件隊列包含四類郵件隊列文件:數(shù)據(jù)文件、控制文件、臨時文件和抄本文件。文件的格式如下:
dfaa00312 數(shù)據(jù)文件
qfaa00312 控制文件
tfaa00312 臨時文件
xfaa00312 抄本文件
顯示郵件的統(tǒng)計信息:
touch /var/tmp/sendmail.st,此文件必須先建立,否則無法用mailstats來查看統(tǒng)計信息.
使用郵件別名和轉(zhuǎn)發(fā):
別名的定義放在/etc/aliases文件中,舉例添加一個別名manager,在/etc/aliases中增加一行:
manager:caddy,zhang,
再對這個別名產(chǎn)生一個所有者,如果sendmail對這個別名發(fā)送郵件有誤,它會發(fā)一個出錯信息給所有者。 在/etc/aliases中增加一行:
owner-manager:
用newaliases或 sendmail –bi重新編譯/etc/aliases,再重起sendmail,mail manager 就可以給caddy,zhang,發(fā)郵件了。
轉(zhuǎn)發(fā)郵件可以使用/etc/aliases,也可以使用$home/.forward。
使用/etc/aliases的例子:
tom:zhang,
這樣的話,tom收不到任何郵件,郵件發(fā)給zhang, ,如果tom也希望收到,上一行做如下修改:
tom:\tom,zhang,
自動刪除tom的郵件:
tom:/dev/null
使用$home/.forward的例子:
編輯該用戶(假設(shè)是tom)主目錄下的.forward文件如下:
zhang,
如果tom也希望收到,上一行做如下修改:
\tom,zhang,
自動刪除tom的郵件:
/dev/null 對$home/.forward的修改一存盤就即刻生效,不象/etc/aliases還需重新編譯。
發(fā)郵件給本機用戶:mail tom
發(fā)郵件給本網(wǎng)絡(luò)其它主機用戶:mail john@mars mars為主機名
給internet郵箱用戶發(fā)郵件:
使用bnu或uucp發(fā)郵件:mail @internetsystem:uucpsystem!username
郵件的存儲:
系統(tǒng)郵箱為/var/spool/mail目錄下,用戶一旦讀取就自動保存在$home/mbox目錄下,如果在產(chǎn)生郵件過程中被中斷,就將這些不完整的信息存放在$home/dead.letter。
二、配置sendmail通過smtp服務(wù)器發(fā)internet郵件:
在tcp/ip網(wǎng)絡(luò)中,常見的三種主機名解析方法是:dns、nis、etc/hosts,如果/etc/resolv.conf存在則先用dns解析,如果要改變解析順序,可以修改/etc/netsvc.conf 或變量nsorder(其優(yōu)先級高于/etc/netsvc.conf )如在/etc/netsvc.conf 中可定義hosts=local,nis,bind,也可設(shè)置nsorder=local,nis
1.有dns的情況
sendmail 缺省設(shè)置與dns一起工作,不需要對/etc/sendmail.cf做任何修改,設(shè)置好/etc/resolv.conf并能連通dns服務(wù)器,就可以發(fā)internet郵件了。
2.使用smtp代理的情況
smtp的全稱即為“簡單郵件傳輸協(xié)議”,它負(fù)責(zé)郵件在兩臺服務(wù)器或客戶端之間進(jìn)行交換。習(xí)慣上,如果源服務(wù)器/客戶端將郵件通過smtp協(xié)議傳送到其目標(biāo)服務(wù)器上,我們將其稱之為“投遞”,否則稱之為“中繼”(relay) smtp服務(wù)具有以下幾個顯著的特點:
1.smtp服務(wù)是匿名服務(wù),并不要求確認(rèn)發(fā)件人與收件人的真實身份;
2.smtp服務(wù)是明文服務(wù),所有經(jīng)過smtp傳輸?shù)膬?nèi)容均以明文傳送。
使用smtp代理的情況下,需要對/etc/sendmail.cf做些修改,先要修改ds項,這是配置用來轉(zhuǎn)發(fā)郵件的主機。格式如下:
smtp主機的定義: ds
的主機名
或者
dssmtp:[...] àsmtp的ip地址
本機的定義: dw, dm和cw
sendmail 缺省自動定義 dw (本機的主機名), dm (域名) 和 cw (主機別名) 。格式如下:
dw //主機名緊挨著dw寫
cwlocalhost
配置完畢后重起sendmail服務(wù),然后可以用sendmail –d0.4查看域名的情況和sendmail版本情況,發(fā)送郵件可以用mail –v 顯示詳細(xì)的發(fā)送信息。
如:
顯示信息如下:
發(fā)件人的名字就是:用戶名
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
>>> . à結(jié)束符<回車><換行>.<回車><換行>
250 ok 1024473751 qp 1714
closing connection to [...]
>>> quit
其中>>>后面顯示的內(nèi)容可以手工輸入,可以telnet ...(smtp代理主機名) 25,一步一步輸入,測試整個郵件發(fā)送過程,找到故障原因所在。