Thunderbird:Backend Hacking Guide For Newbies: Difference between revisions

Jump to navigation Jump to search
Line 201: Line 201:
* ...  
* ...  


=== Major Thunderbird Components ===  
=== Major Thunderbird Entities ===  


Currently, Thunderbird supports four different incoming (IMAP, POP3, NNTP, RSS) and one outgoing messaging protocols (SMTP). Each incoming protocol provide its own [http://wiki.mozilla.org/User:Emre/tb/architecture/diagrams/messageincomingserver|<code>IncomingServer</code>] component implementation.  
Currently, Thunderbird supports four different incoming (IMAP, POP3, NNTP, RSS) and one outgoing messaging protocols (SMTP). Each incoming protocol provide its own implementation (i.e. [http://wiki.mozilla.org/User:Emre/tb/architecture/diagrams/imap/static#nsImapProtocol imap protocol]).  


Each message source is represented by an <code>Account</code> component, and all accounts are managed by [http://wiki.mozilla.org/User:Emre/tb/architecture/diagrams/accountmanager|<code>AccountManager</code>]. Depending on its type, each account also has an associated [http://wiki.mozilla.org/User:Emre/tb/architecture/diagrams/messageincomingserver|<code>IncomingServer</code>] that implements the underlaying messaging protocol.  
Each message source (url+logininfo+protocol) is represented by an <code>Account</code> entity, and all accounts are managed by [http://wiki.mozilla.org/User:Emre/tb/architecture/diagrams/accountmanager <code>AccountManager</code>]. Each account has an associated [http://wiki.mozilla.org/User:Emre/tb/architecture/diagrams/messageincomingserver <code>IncomingServer</code>] entity that is implemented by the corresponding account [http://wiki.mozilla.org/User:Emre/tb/architecture/diagrams/imap/static#nsIImapIncomingServer <code>protocol</code>].  


<code>Identity</code> contains all the personal outgoing mail information
<code>Identity</code> contains all the personal outgoing mail information
Line 213: Line 213:
  MORE INFO NEEDED HERE ABOUT ITS RELATION TO OTHER ENTITIES
  MORE INFO NEEDED HERE ABOUT ITS RELATION TO OTHER ENTITIES


[http://wiki.mozilla.org/User:Emre/tb/architecture/diagrams/messagefolder|<code>Folder</code>] is the logical entity of message contents. Every account has a root folder, which has several subfolders (each potentially with their own subfolders, ad infinitum) which are actual folders on the hosting operating system for local folders and summary (a.k.a headers) files for IMAP and NNTP folders.
Thunderbird uses a folder-based hierarchical representation to organize messages. [http://wiki.mozilla.org/User:Emre/tb/architecture/diagrams/messagefolder <code>Folder</code>] (or <code>MsgFolder</code>) is the logical entity that contains message contents belong to the same hierarchical level. Message content consists of message headers and message body including attachments. These two entities are stored in different physical stores to improve the system performance. Every <code>Account</code> has a root folder, which has several subfolders (each potentially with their own subfolders, ad infinitum) which are actual folders on the hosting operating system.
 
<code>Database</code> component, on the other hand, is the physical store of message headers in '''Mork''' format. This store is the '''msf''' file, e.g. Inbox.msf or mozilla.dev.apps.thunderbird.msf.
 
[[Image:Tb-system-overview.png | TB Class diagram ]]
 


[http://wiki.mozilla.org/User:Emre/tb/architecture/diagrams/messagedatabase <code>Database</code>] entity represents the physical store of message headers, which is a '''msf''' file in '''Mork''' format. Message bodies, on the other hand, are stored in a text file in human readable [http://en.wikipedia.org/wiki/Mbox mbox] format.


* MIME
* MIME
270

edits

Navigation menu