亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2711 | 回復(fù): 1
打印 上一主題 下一主題

mysql 高等套用 zimbra mail 得到 mail status 問(wèn)題 - 有興趣的可以大家一起研究 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2007-11-20 18:18 |只看該作者 |倒序?yàn)g覽
我測(cè)試一個(gè) zimbra mail server 他用的資料庫(kù)是 mysql 5.0

他有一些機(jī)制是不錯(cuò)的 只是沒(méi)有整合起來(lái)  因此突發(fā)其想 做了一個(gè) 可以知道 發(fā)件者 發(fā)給對(duì)方的 mail 之 讀取 轉(zhuǎn)寄 刪除狀態(tài)

原始構(gòu)想

原來(lái)的 zimbra schema 內(nèi)有一個(gè) mailbox table 他記錄了 user 的 id

user 的mail box 都開(kāi)另一個(gè) schema 為 mboxgroup[id] 來(lái)存放
當(dāng)有新mail發(fā)送及進(jìn)來(lái)時(shí) 皆會(huì)有一個(gè) table 來(lái)存放 該table 是 mail_item
所以 我就 以這些方式 用 trigger 來(lái)取得一些資訊 放入另一個(gè) schema mailstat 之 mailstatus內(nèi)
這樣子 就可以知道 每一封寄出的mail 在 mail server 內(nèi) 的status

不過(guò) 我一個(gè)對(duì)一個(gè)寄是 ok的 但是 一個(gè)對(duì)多個(gè)寄 只會(huì)第一個(gè)有效 其他的都不會(huì)寄進(jìn)去(因?yàn)閠rigger寫(xiě)的爛 無(wú)法 split)

想請(qǐng)問(wèn) 我在 trigger 內(nèi) 要如何 將 mboxgroup[id].mail_item.metadat 內(nèi)的 資料如
d1:f0:1:s27:kscg <test2@test.tw>1:t20:admin@test.tw1:vi10ee
分出來(lái)兩比 各自 insert 進(jìn) mailstat.mailstatus.to 內(nèi)

kscg <test2@test.tw> 一筆
admin@test.tw            一筆

因?yàn)?目前只有 一筆觸發(fā) 新增一個(gè)row 所以後面更新 只有 用 subject 來(lái)模糊判斷

我原始 trigger 如下 (每個(gè) schema 都會(huì)建立一組)

發(fā)送時(shí)間  ==>  send_datetime
如收件者何時(shí)收到信件  ==>  get_datetime
收件者何時(shí)開(kāi)啟閱讀  ==>  read_datetime
收件者何時(shí)收件者何時(shí)刪除  ==>  delete_dattetime
收件者何時(shí)轉(zhuǎn)寄  ==>  forward_datetime
發(fā)送者 id send_mailbox_id
發(fā)送者 郵件編號(hào) send_id
收件者 id  ==>  get_mailbox_id
收件者 郵件編號(hào)  ==>  get_id
發(fā)送者 mail  ==>  sender
發(fā)送主旨 subject  ==>  subject

說(shuō)明:
*_datetime 有時(shí)間的表示已經(jīng)完成的

CREATE TABLE `mailstatus` (
        `ID_INDEX`                  MEDIUMINT NOT NULL AUTO_INCREMENT,
        `send_datetime`                        DATETIME,
        `get_datetime`                        DATETIME,
        `read_datetime`                        DATETIME,
        `delete_datetime`                DATETIME,
        `forward_datetime`                DATETIME,
        `send_mailbox_id`                INTEGER,
        `send_id`                                INTEGER,
        `get_mailbox_id`                INTEGER,
        `get_id`                                INTEGER,
        `sender`                                VARCHAR(128),
        `to`                                        VARCHAR(128),
        `subject`                                TEXT,
        PRIMARY KEY (ID_INDEX)
);

#Release Version 1.0.0.0
DROP TRIGGER mailsend_get
DROP TRIGGER mailread_forward
DROP TRIGGER maildelete

#mail 發(fā)送及收件者收到
CREATE TRIGGER `mailsend_get` AFTER INSERT ON `mail_item`
FOR EACH ROW BEGIN
IF NEW.`flags` = 1 THEN
  INSERT INTO `mailstat`.`mailstatus` SET `send_mailbox_id`=NEW.`mailbox_id`,`send_id`=NEW.`id`,`send_datetime`=date_format(now(),'%Y-%m-%d %H-%i-%S'),`sender`=NEW.`sender`,`subject`=NEW.`subject`;
END IF;
IF NEW.`flags` = 0 THEN
   UPDATE `mailstat`.`mailstatus` SET `get_datetime` = date_format(now(),'%Y-%m-%d %H-%i-%S'),`get_mailbox_id`=NEW.`mailbox_id`,`get_id`=NEW.`id` WHERE `mailstatus`.`subject` like NEW.`subject` AND `mailstatus`.`sender`=NEW.`sender`;
END IF;
END;

#收件者讀取及轉(zhuǎn)寄
CREATE TRIGGER `mailread_forward` AFTER UPDATE ON `mail_item`
FOR EACH ROW
BEGIN
IF NEW.`unread` = 0 THEN
UPDATE `mailstat`.`mailstatus` SET `mailstatus`.`read_datetime` = date_format(now(),'%Y-%m-%d %H-%i-%S') WHERE `mailstatus`.`get_mailbox_id`=NEW.`mailbox_id` AND `mailstatus`.`get_id`=NEW.`id`;
ELSE
IF NEW.`flags` = 8 THEN
UPDATE `mailstat`.`mailstatus` SET `mailstatus`.`forward_datetime` = date_format(now(),'%Y-%m-%d %H-%i-%S') WHERE `mailstatus`.`get_mailbox_id`=NEW.`mailbox_id` AND `mailstatus`.`get_id`=NEW.`id`;
END IF;
END IF;
END;

#收件者刪除信件(在垃圾桶不算刪除 因?yàn)樾旁诶把e 完全刪除才是刪除因?yàn)橥耆珱](méi)有資料)
CREATE TRIGGER `maildelete` AFTER DELETE ON `mail_item`
FOR EACH ROW UPDATE `mailstat`.`mailstatus` SET `mailstatus`.`delete_datetime` = date_format(now(),'%Y-%m-%d %H-%i-%S') WHERE `mailstatus`.`get_mailbox_id`=OLD.`mailbox_id` AND `mailstatus`.`get_id`=OLD.`id`;



希望大家有興趣的一起研究

附檔是 實(shí)際運(yùn)行 後的 一對(duì)一ok的 一對(duì)多是不ok的 因?yàn)?trigger 只inser 一筆 如果能多筆的話就可以搞定了 (範(fàn)例的to因?yàn)楫?dāng)時(shí)沒(méi)有找到 如何用 所以 沒(méi)有用)


多謝各為大大了 以後 大家用postfix+mysql的 應(yīng)該很好用 因?yàn)?這是未來(lái) mail 的一種新趨勢(shì) 可以知道 mail 的status狀態(tài)(這個(gè)機(jī)制目前只有 novell groupwise有 其他mail server都沒(méi)有)

[[i] 本帖最后由 ieting 于 2007-11-20 18:22 編輯 [/i]]

mailstat_mailstatus.jpg (222.91 KB, 下載次數(shù): 43)

MAILSTAT SCHEMA 結(jié)果圖

MAILSTAT SCHEMA 結(jié)果圖

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2007-11-20 22:36 |只看該作者
用substr()函數(shù)來(lái)分別截取,自己稍作處理一下,可以達(dá)到split的效果的
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP