RE: [Imap-protocol] Imap Search Command Parse Logic
李艾倫 <[email protected]>
| Newsgroups | gmane.mail.imap.general |
|---|---|
| Message-ID | <[email protected]> |
Yes, I've been testing my logic with different kinds of scenarios with/out parenthesis and got stuck when there are many levels of sublists. I have to admit my background on data structure is not very solid. That's why I was hoping to get some tips from the experts here. I will proceed with your suggestion using the tree structure. Thank you for helping me out~~ Regards, Helen -----Original Message----- From: Timo Sirainen [mailto:[email protected]] Sent: Friday, May 03, 2013 6:56 PM To: 李艾倫 Cc: [email protected] Subject: Re: [Imap-protocol] Imap Search Command Parse Logic On 3.5.2013, at 13.16, 李艾倫 <[email protected]> wrote: > I'm currently working on implementing IMAP protocol on our mail server. This is my first time implementing such a big project and I've so far coded a majority of IMAP commands in the RFC, except the Search command. > I've been searching on the internet and studied postfix(RPN) algorithm for weeks to see how to parse the search command correctly. > It seems Postfix would work until I encountered something like OR OR A > B C D ==> (OR (OR A B) C) D Could anyone point me a direction on how to implement the Search command when there are multiple ORs? > Should I even consider using Postfix(RPN) algorithm to parse search command? Did you notice that it's also possible to use parenthesis explicitly in the search query? I implemented it by parsing the search command to a tree structure and then iterating through the tree. There are quite a lot of optimizations you can then also do with the tree structure, like first trying to see if the search can even match the message sequence or UID, next checking for flags, then checking for slower ones. I'm not sure if there are any other reasonable ways to even implement it. BTW. You should test your implementation's RFC compliancy with http://imapwiki.org/ImapTest====================================== Powered by Rainbow Mail Server 6.0 本通訊之資訊可能含有受機密或特殊管制之資訊,僅供指定之收件人使用。若您並非指定之收件人,切勿轉寄、散佈、複製或公開本通訊內容之任何部份,並請即通知寄件人並完全刪除本通訊。 The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. If you are not the intended recipient, please contact the sender immediately and destroy the material in its entirety, whether electronic or hard copy. You are notified that any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. Please consider the environment before printing this email. _______________________________________________ Imap-protocol mailing list [email protected] http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol