分享java帶來的快樂

          我喜歡java新東西

          管理 sendmail 的郵件隊列

          郵件隊列是存儲 sendmail 命令傳送的郵件消息數據和控制文件的目錄。缺省情況下,郵件隊列是 /var/spool/mqueue

          郵件消息可能由于很多原因而排入隊列。

          例如:

          1. sendmail 命令可以配置成按一定的時間間隔處理隊列,而不是立即處理。如果這樣,郵件消息必須臨時存儲。
          2. 如果一個遠程主機不響應一個郵件連接的請求,郵件系統會將這些消息排入隊列,稍后再作嘗試。

          打印郵件隊列

          隊列內容可以使用 mailq 命令打印(或通過指定 sendmail 命令的 -bp 標志)。

          這些命令產生隊列標識、消息大小、消息進入隊列的日期以及發送方與收件人的列表。

          郵件隊列文件

          隊列中的每條消息都與一定數量的文件相關聯。這些文件按以下約定命名:

           

          TypefID

          其中 ID 是一個唯一的消息隊列標識,而 Type 是以下表示文件類型的字母中的一個:

          d 包含消息正文但無標題信息的數據文件。
          q 隊列控制文件。該文件包含處理作業所需要的信息。
          t 臨時文件。該文件是 q 文件重建時的一個映象。它快速重命名為 q 文件。
          x 在會話過程中存在并顯示該次會話中發生的任何事件的記錄文件。

          例如,如果一條消息的隊列標識為 AA00269,當 sendmail 命令嘗試傳送消息時,在郵件隊列目錄中創建和刪除以下文件:

          dfAA00269 數據文件
          qfAA00269 控制文件
          tfAA00269 臨時文件
          xfAA00269 記錄文件

          q 控制文件

          q 控制文件包括一系列行,每一行都以一個代碼字母開始:

          B 指定 body type。該行其余部分是定義 body type 的文本字符串。如果缺失該項字段,則缺省情況下 body type 是 7 位的,而且不會嘗試特殊的處理。合法值是 7BIT8BITMIME
          C 包括控制用戶。對于以文件或程序作收件人的地址,sendmail 作為該文件或程序的所有者來執行傳送。控制用戶被設置為文件或程序的所有者。由 .forward:include: 文件讀取的收件人地址也將使控制用戶被設置為文件所有者。當 sendmail 傳送郵件到這些收件人時,sendmail 作為控制用戶傳送,然后轉換回 root 用戶。
          F 包括信包標志。標志是以下的任意組合:w(設置 EF_WARNING 標志)、r(設置 EF_RESPONSE 標志)、8(設置 EF_HAS8BIT 標志)和 b(設置 EF_DELETE_BCC 標志)。其它字母則被忽略而無提示。
          H 包括一個標題定義。此類行的數量任意。H 行出現的順序確定了它們在最終消息里的出現順序。這些行使用的語法與 /etc/mail/sendmail.cf 配置文件中的標題定義相同。(對于早于 AIX 5.1 的版本,該文件是 /etc/sendmail.cf。)
          I df 文件指定內節點和設備信息;這可以在磁盤崩潰后用來恢復郵件隊列。
          K 指定上一次傳輸嘗試的時間(以秒為單位)。
          M 當一條消息由于在傳送嘗試中出現了錯誤而放入隊列時,錯誤的性質就存儲在 M 行。
          N 指定傳送嘗試的總數。
          O 指定 ESMTP 的消息傳輸系統(MTS)的原始值。它只用于傳送狀態通知。
          P 包括當前消息的優先級。優先級用來對隊列排序。數字越大表示優先級越低。當消息位于隊列中時優先級增加。初始優先級取決于消息的類和消息的大小。
          Q 包含初始收件人,由 ESMTP 事務中的 ORCPT= 字段指定。僅用于傳送狀態通知。只應用于緊接著的 R 行。
          R 包含收件人地址。每個收件人占一行。
          S 包含發送方地址。此類行只有一行。
          T 包含消息創建時間,用來計算何時消息超時。
          V 指定隊列文件格式版本號(該隊列文件格式用來允許新的 sendmail 二進制文件讀取舊版本創建的隊列文件)。缺省時指版本 0。如果存在,必須是文件的第一行。
          Z 指定原始信包標識(從 ESMTP 事務中)。只用于傳送狀態通知。
          $ 包含宏定義。某些宏($r$s)的值會傳遞到隊列運行階段。

          傳送到 amy@zeus 的消息的 q 文件類似于:

           

          P217031
          T566755281
          MDeferred: Connection timed out during user open with zeus
          Ramy@zeus
          H?P?return-path: <geo>
          Hreceived: by george (0.13 (NL support)/0.01)
          id AA00269; Thu, 17 Dec 87 10:01:21 CST
          H?D?date: Thu, 17 Dec 87 10:01:21 CST
          H?F?From: geo
          Hmessage-id: <8712171601.AA00269@george>
          HTo: amy@zeus
          Hsubject: test

          其中:

          P217031 消息的優先級
          T566755281 提交時間(秒)
          MDeferred: Connection timed out during user open with zeus 狀態消息
          Sgeo 發送方標識
          Ramy@zeus 收件人標識
          Hlines 消息的報頭信息

          在 sendmail 中指定時間值

          要設置消息超時和隊列處理間隔,必須用特定的時間值格式。時間值的格式是:

           

          -qNumberUnit

          其中 Number 是一個整數值,Unit 是單位字母。Unit 可以是以下值中的一個:

          s
          m
          h 小時
          d
          w

          如果沒有指定 Unitsendmail 守護程序使用分(m)作為缺省值。下面三個示例說明時間值的規范:

           

          /usr/sbin/sendmail -q15d

          該命令使得 sendmail 守護程序每 15 天處理一次隊列。

           

          /usr/sbin/sendmail -q15h

          該命令使得 sendmail 守護程序每 15 小時處理一次隊列。

           

          /usr/sbin/sendmail -q15

          該命令使得 sendmail 守護程序每 15 分鐘處理一次隊列。

          強制郵件隊列

          在某些情況下,您可能發現隊列由于某種原因阻塞。您可以使用 -q 標志(沒有值)強制一個隊列運行。您也可以用 -v 標志(詳細)來觀察發生了什么:

           

          /usr/sbin/sendmail -q -v

          使用一個隊列修飾符,您也可以將作業限制在具有特定隊列標識符、發送方或收件人的范圍中。例如,-qRsally 將隊列運行限制為收件人地址之一中有字符串 sally 的作業。同樣,-qS 字符串會將運行限制為特定的發送方,而 -qI 字符串將它限制為特定的隊列標識。

          設置隊列處理時間間隔

          守護程序啟動時 -q 標志的值確定 sendmail 守護程序處理郵件隊列的時間間隔。

          sendmail 守護程序通常由 /etc/rc.tcpip 文件在系統啟動時啟動。/etc/rc.tcpip 文件包含一個稱為隊列處理間隔(QPI)的變量,該變量在該文件啟動 sendmail 守護程序時用來指定 -q 標志的值。缺省情況下,qpi 的值是 30 分鐘。要指定不同的隊列處理間隔:

          1. 用您喜歡的編輯器編輯 /etc/rc.tcpip 文件。
          2. 查找給 qpi 變量指定值的行,例如:

             

            qpi=30m
          3. 將指定給變量 qpi 的值更改為希望的時間值。

          這些變化會在下一次系統重新啟動時生效。如果您想讓這些變化立刻生效,請停止并重新啟動 sendmail 守護程序,指定新的 -q 標志值。更多相關信息,請參閱停止 sendmail 守護程序啟動 sendmail 守護程序

          移動郵件隊列

          當一個主機長期關閉時,路由到(或通過)該主機的很多消息可能存儲在郵件隊列中。結果 sendmail 命令要花費很長時間對隊列排序,這嚴重降低了系統性能。如果您移動隊列到一個臨時空間并創建一個新的隊列,舊隊列可以稍后在該主機恢復服務后運行。要移動隊列到一個臨時空間并創建一個新的隊列,請:

          1. 停止 sendmail 守護程序中的指示信息停止 sendmail 守護程序。
          2. 輸入以下內容移動整個隊列目錄:

             

            cd /var/spool
                mv mqueue omqueue
          3. 啟動 sendmail 守護程序中的指示信息重新啟動 sendmail 守護程序。
          4. 輸入以下內容處理舊郵件隊列:

             

            /usr/sbin/sendmail -oQ/var/spool/omqueue -q

            -oQ 標志指定一個備用隊列目錄。 -q 標志指定運行隊列中的每一項作業。要獲取操作過程的報告,請使用 -v 標志。

            注:
            此操作可能要花些時間。
          5. 當隊列為空時,輸入以下內容除去日志文件和臨時目錄:

             

            rm /var/spool/omqueue/*
                rmdir /var/spool/omqueue

          啟動 sendmail 守護程序

          要啟動 sendmail 守護程序,請輸入以下命令中的一個:

           

          startsrc -s sendmail -a "-bd -q15"

           

          /usr/lib/sendmail -bd -q15

          如果 sendmail 守護程序在輸入這些命令中的一個時已經激活,請參閱屏幕上的以下消息:

           

          sendmail 子系統已經激活。不支持多實例。

          如果 sendmail 守護程序沒有被激活,您將會看到一條消息表示 0sendmail 守護程序已經啟動。

          停止 sendmail 守護程序

          要停止 sendmail 守護程序,請運行 stopsrc -s sendmail 命令。

          如果 sendmail 守護程序沒有隨 startsrc 命令啟動,請:

          • 查找 sendmail 進程標識。
          • 輸入 kill sendmail_pid 命令。(其中 sendmail_pidsendmail 過程的處理標識)。

          posted on 2008-12-22 18:46 強強 閱讀(2223) 評論(0)  編輯  收藏 所屬分類: sendmail

          主站蜘蛛池模板: 南宁市| 安龙县| 克拉玛依市| 深州市| 中阳县| 龙江县| 潞西市| 鸡泽县| 昭平县| 黑龙江省| 来宾市| 定西市| 元朗区| 镇原县| 牟定县| 天水市| 高清| 宁晋县| 庄河市| 合江县| 增城市| 商城县| 清丰县| 莱阳市| 澳门| 玛纳斯县| 锦州市| 平山县| 山阳县| 高邮市| 开阳县| 都昌县| 和田县| 浮梁县| 紫阳县| 东丽区| 河津市| 莱阳市| 南丰县| 宜宾县| 沙坪坝区|