本文接上文:搭建一臺健壯的E-mail服務器—基礎知識和概念 學習Linux平臺的電子郵件首先要學的肯定是sendmail,但是隨著時間推移,Sendmail變得越來越龐大。并且很多現(xiàn)代化的功能,Sendmail也無法繼續(xù)支持。取而代之的是新秀Postfix,它具有體積小,功能強大,并且是公認的最安全的MTA。Redhat公司也將Postfix作為默認的MTA集成在RHEL中。但是,在大多數(shù)聯(lián)網的Unix/Linux主機中,Sendmail使用默認配置即可完成向外界發(fā)送郵件的功能。大大方便了系統(tǒng)管理員。下面將通過系統(tǒng)默認配置的Sendmail講述SMTP command命令。 在這一節(jié)中,將引進一個新詞“只發(fā)不收”。說白了就是有這么一種服務器。發(fā)件人通過它發(fā)出去的郵件,收件人無法通過“回復”功能回復郵件。即便回復了,發(fā)件人也收不到。 這時或許就有人疑惑了,那這種電子郵件系統(tǒng)有什么用啊?我告訴你,這種郵件系統(tǒng)太有用了。做過Linux系統(tǒng)管理員的人都有這么一個體會,每天登錄各種服務器,查看性能參數(shù)。服務器數(shù)量少了還好處理一些。隨著服務器數(shù)量的增多,往往會忘記登錄哪臺服務器。為了解決這種問題,往往在服務器上編寫各種腳本,收集服務器性能參數(shù),通過電子郵件的形式發(fā)送給自己。這種情況下,服務器只發(fā)送郵件,不接收郵件! 配置“只發(fā)不收”型的郵件服務器非常簡單,如下所示。 Sendmail安裝啟動安裝base軟件組,啟動Sendmail服務。這里作者并不設置Sendmail的開機啟動,因為接下來就會將MTA切換到Postfix。沒必要費功夫設置這個! yum groupinstall base -y service sendmail start 查看Sendmail服務器是否運行 [root@localhost ~]# service sendmail status sendmail (pid 1691) is running... sm-client (pid 1700) is running... 郵件服務器必須配置一個全后綴主機名,因為郵件服務器是通過DNS的MX記錄解析的。下面配置可在不重啟服務器的情況下,設置主機名 vi編輯文件/etc/sysconfig/network 添加如下幾行 hostname=mail2.xiyang-liu.com hostname -v mail2.xiyang-liu.com exit 重新登陸系統(tǒng)后,執(zhí)行如下語句查看主機名是否已經配置完畢 [root@mail2 ~]# hostname mail2.xiyang-liu.com 這時,已經可以通過senmail的默認配置向外界發(fā)送郵件了,因為本文檔不著重講解Sendmail,所以這部分配置就略去了。 使用Sendmail發(fā)送郵件使用Sendmail向外界發(fā)送郵件有三種方法:
下面逐一講解這三種方法。 php調用Sendmail自動發(fā)郵件通過LAMP調用Sendmail在/etc/php.ini中配置節(jié)選如下 ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ; http://www./manual/en/mail.configuration.php#ini.sendmail-path sendmail_path = /usr/sbin/sendmail -t -i ; to the sendmail binary. These parameters will always replace the value of 啟動apache之后,即可通過Sendmail命令直接發(fā)送郵件到特定的賬戶。Nagios和cacti配置中會用到這個功能。 使用mailx發(fā)送郵件在Shell中,通過mailx命令發(fā)郵件,如下所示 mailx -s “subject:test mail” xiyangliu1987@gmail.com type something here ctrl+D 上述方式只能手動在命令行中手動輸入郵件內容。有什么方法能不輸入任何內容即可發(fā)送郵件? 想一想,哈哈! 使用SMTP Command發(fā)送郵件通過SMTP命令行發(fā)送郵件。基本命令的解釋如下圖所示: 實際命令操作如下,被雙尖括號包圍的是用戶輸入部分: [root@mail2 ~]#telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 mail2.xiyang-liu.com ESMTP Sendmail 8.14.4/8.14.4; Wed, 12 Jun 2013 10:57:44 +0800 >>ehlo client<< #常用來查看服務器支持那些特征,后必須跟一個標識身份的字符串 250-mail2.xiyang-liu.com Hello localhost [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-DELIVERBY 250 help >>MAIL FROM: root@mail2.xiyang-liu.com << #從哪里發(fā)出,這個地址可以隨意填寫 250 2.1.0 root@mail2.xiyang-liu.com... Sender ok >>RCPT TO: manager@ xiyang-liu.com << #發(fā)給誰 250 2.1.5 manager@ xiyang-liu.com... Recipient ok >>DATA<< #開始輸入正文 354 Enter mail, end with "." on a line by itself #開始輸入正文,以單獨英文句號結束的行標識正文結束 subject: hello me #摘要 telnet smtp to send a email. . #輸入結束 <<250 2.0.0 r5C2vi3V010093 Message accepted for delivery >>quit<< #退出 221 2.0.0 lamp.honliv.com closing connection Connection closed by foreign host. Sendmail的SMTP命令行支持HELP命令提供簡單的命令,如下所示: [root@mail2 ~]#telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 mail2.xiyang-liu.com ESMTP Sendmail 8.14.4/8.14.4; Wed, 12 Jun 2013 11:18:57 +0800 >>ehlo client<< 250-mail2.xiyang-liu.com Hello localhost [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-DELIVERBY 250 HELP >>help<< 214-2.0.0 This is sendmail 214-2.0.0 Topics: 214-2.0.0 HELO EHLO MAIL RCPT DATA 214-2.0.0 RSET NOOP QUIT HELP VRFY 214-2.0.0 EXPN VERB ETRN DSN AUTH 214-2.0.0 STARTTLS 214-2.0.0 For more info use "HELP <topic>". 214-2.0.0 To report bugs in the implementation see 214-2.0.0 http://www./email-addresses.html 214-2.0.0 For local information send email to Postmaster at your site. 214 2.0.0 End of HELP info >>help starttls<< 214-2.0.0 STARTTLS 214-2.0.0 Start TLS negotiation. 214 2.0.0 End of HELP info >>help auth<< 214-2.0.0 AUTH mechanism [initial-response] 214-2.0.0 Start authentication. 214 2.0.0 End of HELP info >>quit<< Connection closed by foreign host. 查看郵件是否已經被接受,如下是thunderbird的截圖: 本文通過Sendmail搭建的郵件服務器,著重講解了SMTP Command的應用。為以后Postfix的講解做好鋪墊。 |
|