国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Unix-Linux 系統(tǒng)自動(dòng)化管理: 郵件系統(tǒng)
[推薦] Unix/Linux 系統(tǒng)自動(dòng)化管理: 郵件系統(tǒng)
本文是 Unix/Linux 系統(tǒng)管理自動(dòng)化系列中的一篇,主要講述郵件系統(tǒng)的配置,以及如何利用 Perl 腳本來實(shí)現(xiàn)電子郵件的自動(dòng)發(fā)送。本文內(nèi)容包括郵件傳輸代理 (MTA) 在 AIX 和 LINUX 系統(tǒng)中的具體配置,如何通過 sendmail 發(fā)送郵件,以及如何接收局域網(wǎng)內(nèi)的用戶郵件。

在 UNIX/Linux 系統(tǒng)的自動(dòng)化管理中,利用腳本自動(dòng)發(fā)送郵件的功能對系統(tǒng)監(jiān)控的工作來說是非常重要的。系統(tǒng)管理人員可以利用 cron 或者 RMC 來創(chuàng)建監(jiān)控腳本,一旦觸發(fā)條件被滿足,操作系統(tǒng)就會(huì)自動(dòng)創(chuàng)建電子郵件,將相關(guān)的狀態(tài)信息發(fā)送到指定的郵箱。通過電子郵件系統(tǒng),系統(tǒng)管理人員就能夠及時(shí)得獲取被管理系統(tǒng)的狀態(tài),進(jìn)而采取相應(yīng)的措施。這種方式可以顯著地節(jié)省系統(tǒng)管理人員的工作強(qiáng)度,并能夠提高系統(tǒng)的可維護(hù)性。

Unix/Linux 郵件系統(tǒng)組成簡介

在傳統(tǒng)的 UNIX 和 Linux 系統(tǒng)中,電子郵件系統(tǒng)的主要組成部分包括郵件用戶代理 (MUA -- mail user agent)、郵件傳輸代理(MTA -- mail transfer agent)、郵件提交代理 (MSA -- mail submission agent)、郵件投遞代理 (MDA -- mail delivery agent) 和郵件訪問代理 (MAA -- mail access agent)。在日常工作中,系統(tǒng)管理人員經(jīng)常接觸的主要有郵件用戶代理 (MUA) 和郵件傳輸代理 (MTA)。在 AIX 系統(tǒng)中,一個(gè)典型的郵件系統(tǒng)如圖 1 所示。

圖 1. 郵件系統(tǒng)示意圖


郵件用戶代理(MUA)是一個(gè)用來讀寫 mail 的程序,實(shí)際上就是郵件系統(tǒng)的客戶端程序。它提供了閱讀,發(fā)送和接受電子郵件的用戶接口。最常用的郵件用戶代理有 mutt,mail,elm,pine,它們都是隨基本系統(tǒng)安裝的 簡單郵件應(yīng)用程序。

郵件傳輸代理(MTA)是一個(gè)在兩個(gè)主機(jī)之間或者本地同一主機(jī)內(nèi)傳送郵件的程序,它負(fù)責(zé)郵件的存儲(chǔ)和轉(zhuǎn)發(fā),并決定傳送郵件到目的地的路線。 UNIX/Linux 系統(tǒng)的標(biāo)準(zhǔn) MTA 是 sendmail,其他的 MTA 還有 qmail, exim 和微軟的 Exchange。MTA 會(huì)監(jiān)視用戶代理的請求,根據(jù)電子郵件的目標(biāo)地址找出對應(yīng)的郵件服務(wù)器,在服務(wù)器之間傳輸郵件并將接收到的郵件進(jìn)行緩沖。

郵件投遞代理(MDA)通常被 MTA 用來投遞郵件到接收者的郵箱中。它能夠從 MTA 接收郵件,并根據(jù)指定的規(guī)則來進(jìn)行本地投遞;它可以把郵件投遞到本地用戶、郵件列表、文件或者應(yīng)用程序。UNIX/Linux 系統(tǒng)中常用的 MDA 包括 maildrop、procmail、postfix 和 delivermail 等。Postfix 用一個(gè)或多個(gè) MDA 來遞送郵件 , procmail 是另外一個(gè)有名的 MDA.

郵件提交代理(MSA)負(fù)責(zé)消息發(fā)送之前的所有必須完成的準(zhǔn)備工作和錯(cuò)誤檢測。MSA 就如同在 MUA 和 MTA 之間的一個(gè)頭腦清醒的檢測人員,它會(huì)對所有的主機(jī)名和從 MUA 得到的信息頭等信息進(jìn)行檢測。

MAA 郵件訪問代理(MAA)將用戶連接到郵件系統(tǒng),并通過 POP 或 IMAP 協(xié)議來收取郵件。UNIX/Linux 系統(tǒng)中,常用的 MAA 有 UW-IMAP、Cyrus-IMAP、COURIER-IMAP 等;當(dāng)郵件向目的地址進(jìn)行傳輸時(shí),一旦源地址和目的地址都不是本地系統(tǒng),那么本地系統(tǒng)就會(huì)作為郵件的中繼。

對于大多數(shù)郵件用戶來說,利用郵件客戶端來接收、查看和發(fā)送電子郵件是最常用的功能。接收和查看郵件比較簡單,但是電子郵件的發(fā)送則相對復(fù)雜。在下面的章節(jié)里面,本文將根據(jù)不同的操作系統(tǒng)來具體介紹如何配置郵件服務(wù)器。


發(fā)送郵件代理配置及自動(dòng)化發(fā)送

Linux 的 sendmail 配置

配置文件

在 Linux 系統(tǒng)中,Sendmail 包括如下配置文件:

     
  • /etc/sendmail.cf
  • /etc/mail/access
  • /etc/mail/aliases
  • /etc/mail/local-host-names
  • /etc/mail/mailertable
  • /etc/mail/virtusertable
  • /etc/mail/domaintable
  • ~/.forward

我們將會(huì) 在下面的章節(jié)中詳細(xì)介紹這些配置文件。

/etc/sendmail.cf

/etc/sendmail.cf 是 sendmail 的主配置文件。該文件存儲(chǔ)了正在運(yùn)行的 mailer 程序的類型信息,定義了重寫郵件地址的規(guī)則和 sendmail 命令的操作環(huán)境。因?yàn)?sendmail.cf 的語法比較復(fù)雜,我們一般不建議手動(dòng)修改該配置文件。安裝了 sendmail 的 UNIX/Linux 系統(tǒng)都會(huì)帶有 sendmail.cf,而且該配置文件在大多數(shù)情況下都不需要修改就可以使用。如果用戶確實(shí)需要修改 sendmail.cf 配置文件 , 一般建議用戶基于 sendmail.mc 宏文件,利用 m4 程序來生成新的 sendmail.cf 文件。

在 RedHat Linux 系統(tǒng)中,sendmail.mc 宏文件位于 /etc/mail/ 目錄。

而 SuSE Linux 系統(tǒng)并沒有 sendmail.mc 文件,相應(yīng)的,它提供了 /etc/mail/linux.mc ( 或者 /etc/mail/linux.nullclient.mc) 替代 sendmail.mc。/etc/mail/linux.mc 是 SuSEconfig 使用 /etc/rc.config 和 /etc/rc.config.d/sendmail.rc.config (SuSE <= 7.3) 或者 /etc/sysconfig/sendmail (SuSE >= 8.0)的參數(shù)而生成的宏文件。SuSEconfig 執(zhí)行 /sbin/conf.d/SuSEconfig.sendmail 腳本來構(gòu)建 .mc 文件,并執(zhí)行 m4 來生成 sendmail.cf 配置文件。用戶可以依照清單 1 所示的 SuSEconfig.sendmail 命令來生成配置文件。

清單 1. 使用 SuSEconfig.sendmail 命令生成配置文件
  1. / sbin/conf.d/SuSEconfig.sendmail -m4 > sendmail.mc
復(fù)制代碼
在 sendmail.mc 配置文件中經(jīng)常出現(xiàn)如下的 m4 命令:

define:

用于定義配置文件中變量的值

divert:

用于定向 m4 進(jìn)程的輸出。

divert 被設(shè)置為 -1 時(shí) , 取消輸出。如果 divert(-1) 在一個(gè)文本塊的前面出現(xiàn),這段文本將不會(huì)再 sendmail.cf 中出現(xiàn) . divert 被設(shè)置為 0 時(shí)來定向數(shù)據(jù)流的輸出,如 sendmail.cf,

VERSIONID:

配置文件定義版本控制信息。

dnl:

注釋掉后面的所有字符。

dnl 出現(xiàn)在行尾,表示將清除掉不想要的空白行;dnl 出現(xiàn)在行首,表示這一行將被當(dāng)成注釋。

DOMAIN:

選擇傳輸郵件的域。

FEATURE:

識別配置文件中一個(gè)特性 (Feature)。

MAILER:

識別包含在 sendmail.cf 一套郵件傳輸方法。

OSTYPE:

定義宏所使用的操作系統(tǒng),它允許 m4 程序增加同相關(guān)操作系統(tǒng)相關(guān)的文件。

undefine:

清除配置文件中的變量值。

需要注意的是,m4 宏處理器生成的 sendmail.cf 文件必須放在 /etc/ 目錄 , 而非 /etc/mail。具體的操作如清單 2 所示。

清單 2.m4 命令生成配置文件 sendmail.cf
  1. cp /etc/sendmail.cf  /etc/sendmail.cf.bak
  2. m4  sendmail.mc > sendmail.cf
復(fù)制代碼
在用戶修改完成 sendmail.cf 配置文件以后,最后一步操作是重新啟動(dòng) sendmail 服務(wù),具體的操作如清單 3 所示:

清單 3. 重啟 sendmail 服務(wù)
  1. service sendmail restart

  2.  
  3. /etc/mail/access 和 access.db
復(fù)制代碼
access 數(shù)據(jù)庫是由 sendmail V8.9 版本引入的特性, 并在 V8.10 重得到很好的發(fā)展。它提供了一個(gè)單一集中管理的訪問規(guī)則數(shù)據(jù)庫;它可以基于發(fā)信者的姓名、地址或者 IP 來判斷是否接受 (OK)、轉(zhuǎn)發(fā)(RELAY)、拒絕 (REJECT) 或者取消 (DISCARD)。sendmail 會(huì)在接收郵件時(shí)進(jìn)行規(guī)則判斷,默認(rèn)情況下只接受本機(jī)發(fā)送的郵件。

對本地設(shè)置來說,/etc/mail/access 和 access.db 并不是必需的;只有在建立中央郵件集中服務(wù)器來處理所有郵件的時(shí)候才需要這兩個(gè)文件。

access 數(shù)據(jù)庫的配置主要有三個(gè)步驟,具體操作如下所示。

     
  • 修改 /etc/mail/access 文件;修改后的內(nèi)容如清單 4 所示。

    清單 4./etc/mail/access 文件內(nèi)容

    localhost.localdomain   RELAY
    localhostRELAY
    127.0.0.1RELAY
    192.168.1RELAY

  • 利用 /etc/mail/access 創(chuàng)建數(shù)據(jù)庫映射文件 access.db,命令如清單 5 所示。

    清單 5. 生成數(shù)據(jù)庫映射文件 access.db

    makemap hash /etc/mail/access.db < /etc/mail/access

  • 重啟 sendmail, 讀取 access.db,具體的命令如清單 3 所示。

    service sendmail restart

/etc/mail/aliases 和 aliases.db

aliases 是 sendmail 郵件系統(tǒng)的別名數(shù)據(jù)庫。它可以定義郵遞列表,在機(jī)器之間轉(zhuǎn)發(fā)郵件,或者允許用多個(gè)名字指定一個(gè)用戶。因?yàn)?Aliases 別名處理的規(guī)則是遞歸的,所以一個(gè)別名指向的目的地也可以是別名。對于每個(gè)信封,sendmail 都會(huì)在別名文件中查找本地用戶的收件人名稱。由于 Sendmail 的可能要在 aliases 文件中搜索數(shù)以千計(jì)的收件人名稱,所以一個(gè)以 DB 數(shù)據(jù)庫格式存儲(chǔ)的 aliases 文件副本被創(chuàng)建,并用來提高查詢的速度。

同樣,這兩個(gè)配置文件也不是必需的。如果 sendmail 是使用中央服務(wù)器的郵件處理中心處理所有郵件的話,安裝在鄰居服務(wù)器或客戶機(jī)的 aliases 和 aliases.db 文件就不需要了。 aliases 數(shù)據(jù)庫的配置主要有三個(gè)步驟,如下所示。

1.修改 /etc/mail/aliases。修改后的內(nèi)容如清單 6 所示。

清單 6. 修改后的 aliases 文件
  1. # Basic system aliases that MUST be present.
  2. postmaster:     root
  3. mailer-daemon:  postmaster

  4.  
  5. # amavis
  6. virusalert:     root
復(fù)制代碼
2.根據(jù) /etc/mail/ aliases 來創(chuàng)建數(shù)據(jù)庫映射文件 aliases.db,該命令如清單 7 所示。

清單 7. 創(chuàng)建數(shù)據(jù)庫映射文件 aliases.db
  1. makemap hash /etc/mail/aliases.db < /etc/mail/aliases
復(fù)制代碼
3.重啟 sendmail,讀取 aliases.db,具體的命令如清單 3 所示。
  1. service sendmail restart
復(fù)制代碼
其他配置文件

除了上文中介紹的配置文件以外,sendmail 還使用了其他的一些配置文件,本節(jié)將逐一介紹這些配置文件。

/etc/mail/local-host-names

設(shè)置服務(wù)器提供服務(wù)的域名,即本地主機(jī)名的主機(jī)名列表。該文件被修改后,sendmail 必須重新啟動(dòng)來更新設(shè)置;

/etc/mail/virtusertable 和 virtusertable.db

virtusertable 數(shù)據(jù)庫用于映射虛擬域到新的地址。這個(gè)特性可以使網(wǎng)絡(luò)上的虛擬域郵件被投遞到本地系統(tǒng)、遠(yuǎn)程系統(tǒng)或者單一用戶地址。/etc/mail /virtusertable 被修改以后,我們可以使用 makemap 命令來生成 /etc/mail/virtusertable.db。同樣,該文件被修改后,sendmail 必須重新啟動(dòng)來更新設(shè)置。

/etc/mail/domaintable 和 domaintable.db

domaintable 數(shù)據(jù)庫用于映射舊域名到新域名。這個(gè)特性使得網(wǎng)絡(luò)上多個(gè)域名可以由舊域名重寫到新域名中。/etc/mail/domaintable 文件被修改后,我們可以利用 makemap 命令來生成 /etc/mail/domaintable.db。同樣,該文件被修改后,sendmail 必須重新啟動(dòng)來更新設(shè)置。

/etc/mail/mailertable 和 mailertable.db

mailertable 數(shù)據(jù)庫通過一種特殊的郵寄程序,把尋址到特定主機(jī)(或域)的郵件重定向到替代的目的地。這個(gè)特性使得網(wǎng)絡(luò)上的郵件可以通過特殊的投遞代理被投遞到一個(gè)新的本地域名或遠(yuǎn)程域名。/etc/mail/mailertable 被修改后,我們可以利用 makemap 命令生成 /etc/mail/mailertable.db。同樣,該文件被修改后,sendmail 必須重新啟動(dòng)來更新設(shè)置。

~/.forward

普通用戶可以通過主目錄下的 .forward 文件來實(shí)現(xiàn)郵件的別名和轉(zhuǎn)發(fā)等功能。

驗(yàn)證 sendmail 服務(wù)

我們可以通過 telnet 程序來訪問 localhost 的 25 端口,從而可以驗(yàn)證 sendmail 服務(wù)是否正常啟動(dòng)。如果能夠登陸成功,則說明 sendmail 服務(wù)已經(jīng)成功啟動(dòng)。具體的驗(yàn)證過程如清單 8 所示。

清單 8. 驗(yàn)證 sendmail 服務(wù)
  1. linux:~ # telnet localhost 25
  2. Trying 127.0.0.1...
  3. Connected to localhost.
  4. Escape character is '^]'.
  5. 220 linux ESMTP Sendmail 8.13.6/8.13.6/SuSE Linux 0.8; Sat, 12 Sep 2009 14:37:24 -0700
  6. ehlo localhost
  7. 250-linux Hello localhost [127.0.0.1], pleased to meet you
  8. 250-ENHANCEDSTATUSCODES
  9. 250-PIPELINING
  10. 250-8BITMIME
  11. 250-SIZE
  12. 250-DSN
  13. 250-ETRN
  14. 250-DELIVERBY
  15. 250 HELP
復(fù)制代碼
自動(dòng)發(fā)送郵件的腳本實(shí)現(xiàn)

在 SLES11 系統(tǒng)中,sendmail-8.13.6-9.15 已經(jīng)被默認(rèn)安裝,清單 9 所示的 Perl 腳本可以實(shí)現(xiàn)從本地主機(jī)自動(dòng)發(fā)送郵件到遠(yuǎn)程郵箱的功能,發(fā)送的郵件將包含發(fā)送者的 mail 地址、接收者的 mail 地址、郵件主題、郵件的內(nèi)容以及兩個(gè)附件。

清單 9. 自動(dòng)發(fā)送郵件的 Perl 腳本
  1. #!/usr/bin/perl
  2. # 將要使用 sendmail 來發(fā)送郵件
  3. my $mailprog = "/usr/sbin/sendmail";
  4. # 發(fā)送者的郵件地址
  5. my $ senderemail = "sender\@cn.ibm.com";
  6. # 發(fā)送者的名字
  7. my  $sender = "sender";
  8. # 發(fā)送時(shí)的時(shí)間
  9. my $datestring=`date +%m.%d.%Y`;
  10. # 接收者的 email 地址
  11. my $email = "receiver\@cn.ibm.com";
  12. # Send file to user in email
  13. open(MAIL, "|$mailprog -f $sender -t $senderemail") or die;
  14. # 創(chuàng)建發(fā)送郵件的頭
  15. print MAIL "From: $sender\n";
  16. print MAIL "To: $email\n";
  17. # 主題
  18. print MAIL "Subject: Automation test on SELS $datestring\n";
  19. #email 的信件內(nèi)容
  20. print MAIL "Hi All\nthis is the automation test result on $datestring. Please check
  21. the  attached files.\n";
  22. # 第一個(gè)附件
  23. $file = "/tmp/28279.txt";
  24. open(FILE, "uuencode $file $file |") or die;
  25. print MAIL  <FILE>;
  26. close(FILE);
  27. # 第二個(gè)附件
  28. $file="/tmp/28280.txt";
  29. open(FILE, "uuencode $file $file |") or die;
  30. while( <FILE>) { print MAIL; };
  31. close(FILE);
  32. # 完成郵件發(fā)送
  33. close(MAIL);
復(fù)制代碼
AIX 的 sendmail 配置

AIX 的 mail 系統(tǒng)中最重要的三個(gè)組成部分是用戶接口 (the user interface)、消息路由程序 (the message routing program) 和消息投遞程序 (the message delivery program) 或 mailer。AIX 系統(tǒng)中的 mail 程序就是所謂的用戶接口 (the user interface),它對應(yīng)上文提到的郵件用戶代理 MUA;sendmail 程序就是所謂的消息路由程序 (the message routing program),它對應(yīng)前面所說的郵件傳輸代理 MTA。在傳遞郵件的時(shí)后,如有必要,sendmail 命令將與遠(yuǎn)程系統(tǒng)建立 TCP/IP 連接 , 然后使用 SMTP 傳遞郵件到遠(yuǎn)程系統(tǒng)。

AIX 郵件系統(tǒng)的工作原理和配置,和 Linux 基本都相同,特殊的地方有以下幾點(diǎn)。

   1. 生成配置文件的腳本的位置

      /usr/samples/tcpip/sendmail/cf/aixsample.mc 被用來生成 sendmail 相應(yīng)的配置文件。
   2. sendmail daemon 啟動(dòng)和關(guān)閉的方式

      啟動(dòng) sendmail:

       startsrc -s sendmail


      關(guān)閉 sendmail:

       stopsrc -s sendmail


   3. 通過 SMTP 服務(wù)器發(fā) Internet 郵件

      在使用 SMTP 代理的情況下,sendmail 需要對 /etc/sendmail.cf 配置文件中的 DS 項(xiàng)進(jìn)行修改。DS 項(xiàng)是指被用來轉(zhuǎn)發(fā)郵件的主機(jī)。注意,該配置項(xiàng)修改以后,sendmail daemon 必須重啟才能生效。/etc/sendmail.cf 文件的具體的修改內(nèi)容如清單 10 所示。


      清單 10./etc/sendmail.cf 文件的修改內(nèi)容
               
       # "Smart" relay host (may be null)
       DS[SMTP 的主機(jī) IP]


自動(dòng)發(fā)送郵件的腳本實(shí)現(xiàn)

在 AIX6100-03 操作系統(tǒng)中,sendmail version AIX6.1/8.13.4 已經(jīng)被默認(rèn)安裝。在這樣的配置環(huán)境中,本節(jié)將給出兩個(gè)實(shí)現(xiàn)不同功能的 Perl 腳本。

清單 11 中的 Perl 腳本實(shí)現(xiàn)了郵件帶主題和附件的功能。

清單 11. 帶有附件的郵件自動(dòng)化發(fā)送郵件腳本
  1. #!/usr/bin/perl
  2. # 接受者的郵件系統(tǒng)
  3. my $email = "receiver\@cn.ibm.com";
  4. # 將作為附件發(fā)送出去的兩個(gè)文件
  5. my $file1="/tmp/1.txt";
  6. my $file2="/tmp/2.txt";
  7. # 將要使用的郵件發(fā)送程序
  8. my $mailprog = "/usr/bin/mail";
  9. # 記錄發(fā)送時(shí)間
  10. my $datestring=`date +%m\/%d\/%Y`;
  11. chomp($datestring);
  12. #email 的主題
  13. my $subject= "\"Subject: Test on AIX $datestring with attachment\"";
  14. # 產(chǎn)生發(fā)送郵件命令
  15. my $cmd_sendmail = "uuencode  $file1 \"1.txt\" $file2  \"2.txt\" |";
  16. $cmd_sendmail .=  "$mailprog -s $subject $email ";
  17. # 執(zhí)行發(fā)送命令
  18. system($cmd_sendmail);
復(fù)制代碼
清單 12 中的 Perl 腳本實(shí)現(xiàn)了不帶附件、有郵件內(nèi)容的自動(dòng)化發(fā)送郵件的功能。

清單 12. 不帶附件的郵件自動(dòng)發(fā)送郵件的腳本實(shí)現(xiàn)
  1. #!/usr/bin/perl
  2. # 接受者的郵件系統(tǒng)
  3. my $email = "receiver\@cn.ibm.com";
  4. # 記錄發(fā)送時(shí)間
  5. my $datestring=`date +%m\/%d\/%Y`;
  6. chomp($datestring);
  7. #email 的主題
  8. my $subject= "\"Subject: Test on AIX $datestring \"";
  9. # 產(chǎn)生發(fā)送郵件命令
  10. my  $cmd_sendmail = "echo $message |";
  11. $cmd_sendmail .=  "$mailprog -s $subject $email";
  12. # 執(zhí)行發(fā)送命令
  13. `$cmd_sendmail`;
復(fù)制代碼
不依賴郵件客戶端配置的實(shí)現(xiàn)

利用 Perl 模塊實(shí)現(xiàn)郵件的發(fā)送

我們同樣可以借助許多現(xiàn)有的 Perl 模塊來實(shí)現(xiàn)電子郵件的發(fā)送功能。從 CPAN 網(wǎng)站上的如下鏈接 (http://search.cpan.org/modlist/Mail_and_Usenet_News/Mail)中,我們可以找到許多與 Mail 配置、傳輸相關(guān)的 Perl 模塊,比如 Mail::Mailer,Mail::POP3Client, Mail::Postfix, Mail::Internet, Mail::Sendmail, Mail::Sender 等等。

CPAN 網(wǎng)站上有如此眾多的 Perl 模塊可供選擇,我們最終選擇了 Mail::Mailer。Mail::Mailer 是由 Mark Overmeer <mark@overmeer.net> 開發(fā)的,已經(jīng)被集成進(jìn) MailTools 模塊。目前 Mail::Mailer 版本為 2.04,用戶可以在如下的鏈接地址上找著詳細(xì)的介紹信息:http://search.cpan.org/~markov/MailTools-2.04/lib/Mail/Mailer.pod??傮w上來說,Mail::Mailer 的實(shí)現(xiàn)很簡潔,雖然它提供了很少的編程接口,但對于郵件的發(fā)送來說已經(jīng)足夠。

Mail::Mailer 的安裝

我們可以通過 CPAN 來安裝 Mail::Mailer。不過需要注意的是,在使用 CPAN 安裝 Mail::Mailer 之前,我們需要確保計(jì)算機(jī)可以連接到 Internet 網(wǎng)絡(luò)。

我們可以在 Linux/UNIX 終端下輸入清單 13 中的命令進(jìn)入 CPAN 的操作界面。CPAN 的命令行界面如清單 14 所示。

清單 13. 進(jìn)入 CPAN 操作界面
  1. perl -MCPAN -e shell
復(fù)制代碼
清單 14.CPAN 的命令行界面
cpan shell -- CPAN exploration and modules installation (v1.9205)
ReadLine support available (maybe install Bundle::CPAN or Bundle::CPANxxl?)
cpan[1]>
其中,cpan[1]>是 CPAN shell 的提示符;我們可以在它后面輸入相應(yīng)的 CPAN 命令來完成特定的功能。最后,我們可以通過在 CPAN 的操作界面中輸入清單 15 中的命令來安裝 Mail::Mailer。CPAN 會(huì)自動(dòng)連接到 CPAN 網(wǎng)站搜索并下載 Mail::Mailer 相關(guān)的包,并最終完成 Mail::Mailer 的安裝。

清單 15. 安裝 Mail::Mailer

cpan[1]> install Mail::Mailer


Mail::Mailer 的接口

Mail::Mailer 提供的是面向?qū)ο蟮慕涌?。它非常簡單,除?Mail::Mailer 對象構(gòu)造和析構(gòu)的方法以外,只有一個(gè) open 方法需要介紹。

使用 new 來構(gòu)造 Mail::Mailer 對象的方法如清單 16 所示。

清單 16.Mail:Mailer 對象的構(gòu)造方法

Mail::Mailer->new(TYPE, ARGS)


其中,TYPE 是指后臺(tái)的郵件發(fā)送程序,而 ARGS 是指傳遞給該后臺(tái)郵件發(fā)送程序的參數(shù)列表。目前可用的 TYPE 值有 sendmail,smtp,qmail 和 testfile。

sendmail:

它會(huì)調(diào)用系統(tǒng)中已安裝的 sendmail 做為郵件發(fā)送程序;

smtp:

它會(huì)通過 Net::SMTP 模塊去投遞郵件;

qmail:

它就會(huì)使用 qmail 的 qmail-inject 程序去發(fā)送郵件;

testfile:

用來調(diào)試的參數(shù),它會(huì)將相關(guān)的數(shù)據(jù)寫入日志文件。

另外需要說明的方法是 $obj->open(),它的聲明和參數(shù)說明如清單 17 所示。

清單 17.Mail::Mailer 對象的 open() 方法

$obj->open(HASH)


當(dāng)通過 Mail::Mailer->new(TYPE, ARGS)成功創(chuàng)建 Mail::Mailer 對象以后,我們就可以通過 open() 方法來構(gòu)建郵件。這里 HASH 類型的參數(shù)包含一系列的 key 和對應(yīng)的 value;注意,這些 key 值必須是郵件的 head 域所包含的值,比如 To,F(xiàn)rom,Replyto,Subject,Cc,Bcc 等等;而 value 必須是這些 key 所對應(yīng)的值。

Mail::Mailer 發(fā)送郵件的腳本實(shí)現(xiàn)

我們將給出一個(gè)使用 Mail::Mailer 來發(fā)送電子郵件到指定郵箱的實(shí)例,如清單 18 所示。我們使用 sendmail 作為后臺(tái)的郵件發(fā)送程序。

清單 18. 使用 Mail::Mailer 發(fā)送郵件
  1. #!/usr/bin/perl – w
  2. use Mail::Mailer;
  3. # 構(gòu)造 Mail::Mailer 對象
  4. my $mail = Mail::Mailer->new( ‘ sendmail ’ )
  5.          or die “Couldn ’ t create Mail::Mailer object!\n”;
  6. # 構(gòu)建郵件
  7. $mail_headers->open(
  8. {
  9. From => 'root@root-desktop',
  10. To => 'yourname@yourmail.com',
  11. Subject => 'Mail::Mailer is used',
  12.          }
  13. );
  14. # 發(fā)送郵件
  15. print $mail “This is the body part of the message you can write your message here”;
  16. $mail->close($mail_headers);
  17. exit 0;
復(fù)制代碼
結(jié)合 cron 的系統(tǒng)監(jiān)控功能實(shí)現(xiàn)

系統(tǒng)管理人員可以結(jié)合 cron 與電子郵件的自動(dòng)發(fā)送功能,實(shí)現(xiàn)系統(tǒng)狀態(tài)的自動(dòng)監(jiān)控功能。cron 是一個(gè)定時(shí)調(diào)度任務(wù)的守護(hù)進(jìn)程,它可以根據(jù)時(shí)間、日期、月份、星期的組合來調(diào)度任務(wù)。

監(jiān)控系統(tǒng) CPU 利用率(LINUX)

我們首先實(shí)現(xiàn)一個(gè)可以獲取當(dāng)前系統(tǒng) CPU 使用率的 Perl 腳本。它可以獲取當(dāng)前的 CPU 使用率,一旦獲取到的 CPU 使用率超過 85%,該腳本就會(huì)自動(dòng)發(fā)送電子郵件給指定的用戶。注意,該腳本只能運(yùn)行于 Linux 平臺(tái)。

具體的 Perl 腳本內(nèi)容可以參考清單 19。

清單 19. 監(jiān)控系統(tǒng) CPU 利用率的腳本
  1. #!/usr/bin/perl
  2. use Mail::Mailer;
  3. sub get_cpu_stat {
  4.          my @stats;
  5.          my $fh;
  6.          #Linux 系統(tǒng),從 /proc/stat 來獲取 CPU 信息
  7.          open($fh, "cat /proc/stat |") or die "$!";
  8.          while (<$fh>) {
  9.                  #get the cpu stat
  10.                  if (/^cpu .*/) {
  11.                          @stats = split;
  12.                  }
  13.          }
  14.          close $fh;
  15.          #then, we parse the cpu stat information;
  16.        
  17.          #the information from "man proc",
  18.          #the format is for Linux 2.6.11 or higher
  19.          #cpu  user   nice  system idle     iowait irq  softirq steal
  20.          #cpu  628808 1642  61861  24978051 22640  349  3086    0     0
  21. # 數(shù)據(jù)格式如上所示,更詳細(xì)的信息請參考 proc 的 manpage
  22.          my $total = $stats[1] + $stats[2] + $stats[3] + $stats[4];
  23.          my $idle = $stats[4];
  24.          # 返回當(dāng)前 CPU 的 total 和 idle 時(shí)間片計(jì)數(shù)
  25.          return ($total, $idle);
  26. }

  27.  
  28. my $mailer = Mail::Mailer->new('sendmail');
  29. my ($t1, $i1) = get_cpu_stat();
  30. sleep 5;
  31. my ($t2, $i2) = get_cpu_stat();

  32.  
  33. my $total = $t2 - $t1;
  34. my $idle = $i2 - $i1;
  35. # 計(jì)算獲取 5 秒鐘之內(nèi)的 CPU 利用率
  36. my $per = 100 * ($total - $idle) / $total;

  37.  
  38. if( $per > 85) {
  39.          # 如果 CPU 利用率大于 85%
  40.          my $msg = sprintf("!!!Attention\nThe CPU usage on your server is %.2f"
  41.          . "% right now!\nPlease  check it right now!\n", $per);

  42.  
  43.          #send mail to the assigned user
  44.          # 發(fā)送郵件給指定的用戶
  45.          $mailer->open(
  46.                  {
  47.                          From => 'root@minjun-desktop',
  48.                          To => 'minjun.xi@cn.ibm.com',
  49.                          Subject => 'Attention for your cluster',
  50.                  })
  51.                  or die "Mail::Mailer failed!\n";
  52.          print $mailer $msg;

  53.  
  54.          $mailer->close();
  55. }
復(fù)制代碼
配置 cron 任務(wù)

我們可以利用“crontab”命令來配置 cron 任務(wù);在本文中,我們設(shè)定每個(gè)小時(shí)的第 30 分鐘運(yùn)行一下監(jiān)控系統(tǒng) CPU 利用率的腳本。我們使用”crontab – e”命令來編輯當(dāng)前用戶的 cron 任務(wù),編輯的內(nèi)容如清單 20 所示,其中 mon.pl 是清單 19 中 Perl 腳本的名稱,/path/to/ 是指 mon.pl 腳本的路徑。

清單 20. 配置 cron 任務(wù)
  1. 30 * * * * perl /path/to/mon.pl
復(fù)制代碼
小結(jié)

本文是 Unix/Linux 系統(tǒng)管理自動(dòng)化系列中的一篇,主要講述 UNIX/Linux 的郵件系統(tǒng)的配置,并講述了如何使用 Perl 腳本來實(shí)現(xiàn)郵件的自動(dòng)發(fā)送和接收;最后,本文把自動(dòng)發(fā)送郵件的功能與 cron 系統(tǒng)結(jié)合在一起,給出了監(jiān)控系統(tǒng) CPU 利用率的腳本實(shí)現(xiàn)。系統(tǒng)管理人員可以利用類似的功能來實(shí)現(xiàn)系統(tǒng)的自動(dòng)化管理,從而減輕自己的工作強(qiáng)度,并且提高系統(tǒng)的可維護(hù)性。

from site : http://club.topsage.com/thread-463511-1-1.html
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
用Sypma管理郵件列表
性能測試的協(xié)議分析
Linux環(huán)境下郵件服務(wù)器軟件的分析比較
如何基于Linux架設(shè)web式Sendmail郵件服務(wù)器?
linux CentOS6的mail/sendmail命令發(fā)送電子郵件實(shí)現(xiàn)
linux下mail命令使用
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服