如何截取出SMTP 的郵件資訊? |
尚未結案
|
gaui
一般會員 發表:25 回覆:36 積分:12 註冊:2004-06-11 發送簡訊給我 |
請問:
我現在要寫一隻分析由mail server上記錄郵件往來的txt檔,
顯示寄送郵件成功和失敗的次數,
但因為txt檔中每封郵件的資訊不儘相同,
只能抓出幾個關鍵字,
例如:每次郵件收發的開頭與結尾是-------
-------
SMTP session successful代表收信成功
Accepting smtp connection from 後的是寄件者
RCPT To:後的是收件者,
所以我想應該是先截取出------
------間的資訊,
再以關鍵字搜尋,
得到所要的資訊,
所以想請問各位先進們,我要如何截取出------
------當中的資訊呢
還有,要如何以關鍵字截取我需要的資訊呢?
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
gaui
一般會員 發表:25 回覆:36 積分:12 註冊:2004-06-11 發送簡訊給我 |
----------
Mon 2004-11-01 00:01:14:
Mon 2004-11-01 00:01:26: Session 3832; child 3; thread 1224
Mon 2004-11-01 00:00:49: Accepting SMTP connection from [68.56.225.94 : 4063]
Mon 2004-11-01 00:00:49: Looking up PTR record for 68.56.225.94 (94.225.56.68.IN-ADDR.ARPA)
Mon 2004-11-01 00:00:49: D=94.225.56.68.IN-ADDR.ARPA TTL=(720) PTR=[pcp858737pcs.ptchar01.fl.comcast.net]
Mon 2004-11-01 00:00:49: Gathering A-records for PTR hosts
Mon 2004-11-01 00:00:49: D=pcp858737pcs.ptchar01.fl.comcast.net TTL=(105) A=[68.56.225.94]
Mon 2004-11-01 00:00:49: --> 220 mail2.wieson.com ESMTP MDaemon 7.0.1; Mon, 01 Nov 2004 00:00:49 +0800
Mon 2004-11-01 00:00:50: <-- HELO elton.net.au
Mon 2004-11-01 00:00:50: Performing lookup on elton.net.au (looking for 68.56.225.94)
Mon 2004-11-01 00:01:00: 10 second wait for DNS response exceeded
Mon 2004-11-01 00:01:10: 10 second wait for DNS response exceeded
Mon 2004-11-01 00:01:10: --> 250 mail2.wieson.com Hello pcp858737pcs.ptchar01.fl.comcast.net, pleased to meet you
Mon 2004-11-01 00:01:11: <-- MAIL FROM:
Mon 2004-11-01 00:01:11: Performing lookup on elton.net.au (looking for 68.56.225.94)
Mon 2004-11-01 00:01:11: D=elton.net.au TTL=(29) A=[203.147.239.145]
Mon 2004-11-01 00:01:17: P=100 D=elton.net.au TTL=(29) MX=[bne004m.server-mail.com] {202.139.235.79}
Mon 2004-11-01 00:01:17: P=050 D=elton.net.au TTL=(29) MX=[bne007m.server-mail.com]
Mon 2004-11-01 00:01:17: P=010 D=elton.net.au TTL=(29) MX=[eltontech.dyndns.org]
Mon 2004-11-01 00:01:17: D=elton.net.au TTL=(29) A=[203.147.239.145]
Mon 2004-11-01 00:01:17: D=elton.net.au TTL=(29) A=[203.147.239.145]
Mon 2004-11-01 00:01:17: --> 250 , Sender ok
Mon 2004-11-01 00:01:20: <-- RCPT TO:
|
microbean
初階會員 發表:1 回覆:43 積分:38 註冊:2004-04-09 發送簡訊給我 |
Hi ! gaui 給你一些提示 , 你正在做 parsing 的事情 ,
parsing 有時會因為效能而改變 parsing 的邏輯 .
所以可能要先清楚知道 , 你最後要的資訊是什麼 ?
如果你只是要知道成功與失敗的"次數" , 會建議你 , 直接去 parsing
keyword , 例如 : SMTP session successful ... 如果你要 parse 出所有的欄位後再統計 ,
那可能要用 SMTP 的協定來 parse
http://www.faqs.org/rfcs/rfc821.html (SMPT rfc 821)
所以如果要用 smtp 來解 , 用 ---------- 來作為起始或結束
的分段, 然後依序解出每個指令溝通是否成功 , smpt 指令的溝通過程中,
你會發現回應都有 3 位數的回應碼,並且後面一定有空白 ,
所以, 你可以簡單的用 2xx , 3xx , 來判定成功 ,
把其他的視為失敗(例如 5xx) 如果某一個指令 已經遇到不是 2xx , 3xx 就代表寄送或接收失敗了
就可以停止往下 parse , 但如果你仍要剩下的資訊就繼續往下走 另一個有可能可以使用的 keyword 是 "-->" 或 "<--" ,
先找到 --> 在找回應碼 , 所有的回應碼都是 2xx , 3xx 就是成功
,所以可以是先確定是否成功 , 再去解個別的欄位 .
parsing 的方法有很多種 技巧變化也很大 , 希望以上的訊息有幫助
_= 沒事就 winsock 一下 =_
|
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |