https://wiki.mozilla.org/api.php?action=feedcontributions&user=BenB&feedformat=atomMozillaWiki - User contributions [en]2024-03-29T11:47:39ZUser contributionsMediaWiki 1.27.4https://wiki.mozilla.org/index.php?title=Modules/Thunderbird&diff=1247271Modules/Thunderbird2023-07-27T09:13:30Z<p>BenB: Please make a Thunderbird Council Motion before changing this page. Thank you. -- Undo revision 1247250 by Kewisch (talk)</p>
<hr />
<div><noinclude><br />
'''Only module owners may edit this page.''' <br />
<br />
They may:<br />
<br />
* update any information about their module except the name of the owner<br />
* add or remove sub-modules<br />
* change the owner of a sub-module <br />
* add emeritus owners or peers<br />
<br />
Other changes, including changes of module owner or addition/removal of modules, must be agreed with the Module Ownership Module group, probably via a discussion in [https://www.mozilla.org/about/forums/#governance mozilla.governance].<br />
</noinclude><br />
{{Module<br />
|name=Thunderbird Council<br />
|description=The Thunderbird Council is the elected governing body for the [https://www.thunderbird.net/en-US/about/ Thunderbird Project], including the code modules that develop the code in Thunderbird product(s). It is the top-level module of the project, and Peers are members of the Council.<br />
|owner=Chair 2023: [mailto:ba@thunderbird.net Berna Alp] (:ba)<br />
|peers=[mailto:ben@thunderbird.net Ben Bucksch] (:benb), [mailto:ba@thunderbird.net Berna Alp] (:ba), [mailto:danny@thunderbird.net Danny Colin], [mailto:john@thunderbird.net John Bieling] (:TbSync), Micah Ilbery, [mailto:clokep@patrick.cloke.us Patrick Cloke] (:clokep), [mailto:mozilla@kewis.ch Philipp Kewisch] (:Fallen)<br />
|url=[mailto:council@thunderbird.net The Thunderbird Council], [[Thunderbird:Home#Governance|Past Councils]]<br />
}}<br />
<br />
{{Module<br />
|name=Thunderbird<br />
|description=Standalone Mail Application.<br />
|owner=The Thunderbird Council<br />
|ownersemeritus=Mark Banner (:standard8), David Bienvenu (:bienvenu), Scott MacGregor (:mscott)<br />
|peers=[mailto:geoff@thunderbird.net Geoff Lankow] (:darktrojan), [mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin), [mailto:acelists@atlas.sk Aceman] (:aceman), [mailto:richard.marti@gmail.com Richard Marti] (:paenglab)<br />
|peersemeritus=Blake Winton, Mike Conley, Kent James, Jörg Knobloch (:jorgk)<br />
|source_dirs=mail/,mail/themes/,other-licenses/branding/thunderbird/<br />
|url=https://developer.thunderbird.net/<br />
|components=Thunderbird<br />
}}<br />
<br />
{{Module<br />
|name=Build Config<br />
|description=Build Automation<br />
|owner=[mailto:rob@thunderbird.net Rob Lemley] (:rjl)<br />
|source_dirs=mail/config/, taskcluster/<br />
|peers=[mailto:mozilla@kewis.ch Philipp Kewisch] (:Fallen)<br />
|peersemeritus=Mark Banner (:standard8), Siddharth Agarwal (:sid0), Justin Wood (:callek), Joshua Cranmer (:jcranmer), Tom Prince (:tomprince)<br />
|components=Thunderbird::Build Config<br />
}}<br />
<br />
{{Module<br />
|name=Add-on Support<br />
|description=APIs to enable extensions, as well as their installation<br />
|owner=[mailto:john@thunderbird.net John Bieling] (:TbSync)<br />
|peers=[mailto:geoff@thunderbird.net Geoff Lankow] (:darktrojan), [mailto:mozilla@kewis.ch Philipp Kewisch] (:Fallen)<br />
|components=Thunderbird::Add-Ons Extensions API, Thunderbird::Add-Ons General<br />
}}<br />
<br />
{{Module<br />
|name=Instant Messaging<br />
|description=The chat and instant messaging component of Thunderbird<br />
|owner=[mailto:clokep@patrick.cloke.us Patrick Cloke] (:clokep)<br />
|ownersemeritus=[mailto:florian@mozilla.com Florian Quèze]<br />
|peers=[mailto:martin@humanoids.be Martin Giger] (:freaktechnik)<br />
|peersemeritus=[mailto:aleth@instantbird.org aleth] (:aleth), [mailto:benediktp@ymail.com Benedikt Pfeifer] (:Mic)<br />
|components=Thunderbird::Instant Messaging<br />
|source_dirs=mail/components/im/, chat/<br />
}}<br />
<br />
{{Module<br />
|name=Theme<br />
|description=The interface of Thunderbird related to the OS and custom themes<br />
|owner=[mailto:richard.marti@gmail.com Richard Marti] (:paenglab)<br />
|peers=[mailto:alessandro@thunderbird.net Alessandro Castellani] (:aleca)<br />
|peersemeritus=Josiah Bruner (:JosiahOne), Blake Winton (:bwinton), Mike Conley (:mconley)<br />
|components=Thunderbird::Theme<br />
|source_dirs=mail/themes/<br />
}}<br />
<br />
{{Module<br />
|name=Message Security<br />
|description=OpenPGP and S/MIME message security.<br />
|owner=[mailto:kaie@thunderbird.net Kai Engert] (:kaie)<br />
|source_dirs=mail/extensions/openpgp, mail/extensions/smime<br />
|peers=[mailto:patrick@enigmail.net Patrick Brunschwig], [mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin)<br />
}}<br />
<br />
{{Module<br />
|name=UX (User Experience)<br />
|description=Usability and user journey, including User Interface and Accessibility<br />
|owner=[mailto:alessandro@thunderbird.net Alessandro Castellani] (:aleca)<br />
|peers=[mailto:richard.marti@gmail.com Richard Marti] (:paenglab), [mailto:henry@thunderbird.net Henry Wilkes] (:henry), [mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin)<br />
|peersemeritus=Blake Winton (:bwinton)<br />
|components=Thunderbird::General<br />
}}<br />
<br />
{{Module<br />
|name=Website<br />
|description=The Thunderbird related pages on thunderbird.net and elsewhere.<br />
|owner=[mailto:sancus@off.net Andrei Hajdukewycz] (:sancus)<br />
|peers=[mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin), [mailto:vseerror@lehigh.edu Wayne Mery] (:wsmwk), [mailto:ryan@thunderbird.net Ryan Sipes] (:ryanleesipes), [mailto:alessandro@thunderbird.net Alessandro Castellani] (:aleca)<br />
|components=https://github.com/thundernest/thunderbird-website<br />
|source_dirs=https://github.com/thundernest/thunderbird-website<br />
}}<br />
<br />
===See also===<br />
* [[Modules/Calendar|Calendar]]<br />
* [[Modules/MailNews_Core|MailNews Core]]</div>BenBhttps://wiki.mozilla.org/index.php?title=Modules/Thunderbird&diff=1247211Modules/Thunderbird2023-07-25T18:22:13Z<p>BenB: Undo revision 1247209 by Rjl (talk)</p>
<hr />
<div><noinclude><br />
'''Only module owners may edit this page.''' <br />
<br />
They may:<br />
<br />
* update any information about their module except the name of the owner<br />
* add or remove sub-modules<br />
* change the owner of a sub-module <br />
* add emeritus owners or peers<br />
<br />
Other changes, including changes of module owner or addition/removal of modules, must be agreed with the Module Ownership Module group, probably via a discussion in [https://www.mozilla.org/about/forums/#governance mozilla.governance].<br />
</noinclude><br />
{{Module<br />
|name=Thunderbird Council<br />
|description=The Thunderbird Council is the elected governing body for the [https://www.thunderbird.net/en-US/about/ Thunderbird Project], including the code modules that develop the code in Thunderbird product(s). It is the top-level module of the project, and Peers are members of the Council.<br />
|owner=Chair 2023: [mailto:ba@thunderbird.net Berna Alp] (:ba)<br />
|peers=[mailto:ben@thunderbird.net Ben Bucksch] (:benb), [mailto:ba@thunderbird.net Berna Alp] (:ba), [mailto:danny@thunderbird.net Danny Colin], [mailto:john@thunderbird.net John Bieling] (:TbSync), Micah Ilbery, [mailto:clokep@patrick.cloke.us Patrick Cloke] (:clokep), [mailto:mozilla@kewis.ch Philipp Kewisch] (:Fallen)<br />
|url=[mailto:council@thunderbird.net The Thunderbird Council], [[Thunderbird:Home#Governance|Past Councils]]<br />
}}<br />
<br />
{{Module<br />
|name=Thunderbird<br />
|description=Standalone Mail Application.<br />
|owner=The Thunderbird Council<br />
|ownersemeritus=Mark Banner (:standard8), David Bienvenu (:bienvenu), Scott MacGregor (:mscott)<br />
|peers=[mailto:geoff@thunderbird.net Geoff Lankow] (:darktrojan), [mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin), [mailto:acelists@atlas.sk Aceman] (:aceman), [mailto:richard.marti@gmail.com Richard Marti] (:paenglab)<br />
|peersemeritus=Blake Winton, Mike Conley, Kent James, Jörg Knobloch (:jorgk)<br />
|source_dirs=mail/,mail/themes/,other-licenses/branding/thunderbird/<br />
|url=https://developer.thunderbird.net/<br />
|components=Thunderbird<br />
}}<br />
<br />
{{Module<br />
|name=Build Config<br />
|description=Build Automation<br />
|owner=[mailto:rob@thunderbird.net Rob Lemley] (:rjl)<br />
|source_dirs=mail/config/, taskcluster/<br />
|peers=[mailto:mozilla@kewis.ch Philipp Kewisch] (:Fallen)<br />
|peersemeritus=Mark Banner (:standard8), Siddharth Agarwal (:sid0), Justin Wood (:callek), Joshua Cranmer (:jcranmer), Tom Prince (:tomprince)<br />
|components=Thunderbird::Build Config<br />
}}<br />
<br />
{{Module<br />
|name=Add-on Support<br />
|description=APIs to enable extensions, as well as their installation<br />
|owner=[mailto:john@thunderbird.net John Bieling] (:TbSync)<br />
|peers=[mailto:geoff@thunderbird.net Geoff Lankow] (:darktrojan), [mailto:mozilla@kewis.ch Philipp Kewisch] (:Fallen)<br />
|components=Thunderbird::Add-Ons Extensions API, Thunderbird::Add-Ons General<br />
}}<br />
<br />
{{Module<br />
|name=Instant Messaging<br />
|description=The chat and instant messaging component of Thunderbird<br />
|owner=[mailto:clokep@patrick.cloke.us Patrick Cloke] (:clokep)<br />
|ownersemeritus=[mailto:florian@mozilla.com Florian Quèze]<br />
|peers=[mailto:martin@humanoids.be Martin Giger] (:freaktechnik)<br />
|peersemeritus=[mailto:aleth@instantbird.org aleth] (:aleth), [mailto:benediktp@ymail.com Benedikt Pfeifer] (:Mic)<br />
|components=Thunderbird::Instant Messaging<br />
|source_dirs=mail/components/im/, chat/<br />
}}<br />
<br />
{{Module<br />
|name=Theme<br />
|description=The interface of Thunderbird related to the OS and custom themes<br />
|owner=[mailto:richard.marti@gmail.com Richard Marti] (:paenglab)<br />
|peers=[mailto:alessandro@thunderbird.net Alessandro Castellani] (:aleca)<br />
|peersemeritus=Josiah Bruner (:JosiahOne), Blake Winton (:bwinton), Mike Conley (:mconley)<br />
|components=Thunderbird::Theme<br />
|source_dirs=mail/themes/<br />
}}<br />
<br />
{{Module<br />
|name=Message Security<br />
|description=OpenPGP and S/MIME message security.<br />
|owner=[mailto:kaie@thunderbird.net Kai Engert] (:kaie)<br />
|source_dirs=mail/extensions/openpgp, mail/extensions/smime<br />
|peers=[mailto:patrick@enigmail.net Patrick Brunschwig], [mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin)<br />
}}<br />
<br />
{{Module<br />
|name=UX (User Experience)<br />
|description=Usability and user journey, including User Interface and Accessibility<br />
|owner=[mailto:alessandro@thunderbird.net Alessandro Castellani] (:aleca)<br />
|peers=[mailto:richard.marti@gmail.com Richard Marti] (:paenglab), [mailto:henry@thunderbird.net Henry Wilkes] (:henry), [mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin)<br />
|peersemeritus=Blake Winton (:bwinton)<br />
|components=Thunderbird::General<br />
}}<br />
<br />
{{Module<br />
|name=Website<br />
|description=The Thunderbird related pages on thunderbird.net and elsewhere.<br />
|owner=[mailto:sancus@off.net Andrei Hajdukewycz] (:sancus)<br />
|peers=[mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin), [mailto:vseerror@lehigh.edu Wayne Mery] (:wsmwk), [mailto:ryan@thunderbird.net Ryan Sipes] (:ryanleesipes), [mailto:alessandro@thunderbird.net Alessandro Castellani] (:aleca)<br />
|components=https://github.com/thundernest/thunderbird-website<br />
|source_dirs=https://github.com/thundernest/thunderbird-website<br />
}}<br />
<br />
===See also===<br />
* [[Modules/Calendar|Calendar]]<br />
* [[Modules/MailNews_Core|MailNews Core]]</div>BenBhttps://wiki.mozilla.org/index.php?title=MailServerList&diff=1247067MailServerList2023-07-18T17:41:11Z<p>BenB: Database</p>
<hr />
<div>Documentation: [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Autoconfiguration on MDC]<br />
Database: [http://ispdb.mozillamessaging.com ISP DB]<br />
<br />
<b>You must read this page before you supply configs.</b> By submitting configs, you place your contributions in the public domain (insofar as copyright can apply to collections of facts). You may use the list for any purpose. Good community members are expected to contribute back any improvements they make to the list.<br />
<br />
The Mail Server List is a database of email providers and the correct configuration for their mail servers. It is designed to enable services which make autoconfiguration of email clients as easy as giving name, email address and password.<br />
<br />
Please test config information before submitting it, if at all possible (although untested data is better than no data). You are probably in the best position to try this, as other project participants won't have accounts with this ISP.</div>BenBhttps://wiki.mozilla.org/index.php?title=Modules/Thunderbird&diff=1246946Modules/Thunderbird2023-07-03T16:00:26Z<p>BenB: Revert changes not approved by Council</p>
<hr />
<div><noinclude><br />
'''Only module owners may edit this page.''' <br />
<br />
They may:<br />
<br />
* update any information about their module except the name of the owner<br />
* add or remove sub-modules<br />
* change the owner of a sub-module <br />
* add emeritus owners or peers<br />
<br />
Other changes, including changes of module owner or addition/removal of modules, must be agreed with the Module Ownership Module group, probably via a discussion in [https://www.mozilla.org/about/forums/#governance mozilla.governance].<br />
</noinclude><br />
{{Module<br />
|name=Thunderbird Council<br />
|description=The Thunderbird Council is the elected governing body for the [https://www.thunderbird.net/en-US/about/ Thunderbird Project], including the code modules that develop the code in Thunderbird product(s). It is the top-level module of the project, and Peers are members of the Council.<br />
|owner=Chair 2023: [mailto:ba@thunderbird.net Berna Alp] (:ba)<br />
|peers=[mailto:ben@thunderbird.net Ben Bucksch] (:benb), [mailto:ba@thunderbird.net Berna Alp] (:ba), [mailto:danny@thunderbird.net Danny Colin], [mailto:john@thunderbird.net John Bieling] (:TbSync), Micah Ilbery, [mailto:clokep@patrick.cloke.us Patrick Cloke] (:clokep), [mailto:mozilla@kewis.ch Philipp Kewisch] (:Fallen)<br />
|url=[mailto:council@thunderbird.net The Thunderbird Council], [[Thunderbird:Home#Governance|Past Councils]]<br />
}}<br />
<br />
{{Module<br />
|name=Thunderbird<br />
|description=Standalone Mail Application.<br />
|owner=The Thunderbird Council<br />
|ownersemeritus=Mark Banner (:standard8), David Bienvenu (:bienvenu), Scott MacGregor (:mscott)<br />
|peers=[mailto:geoff@thunderbird.net Geoff Lankow] (:darktrojan), [mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin), [mailto:acelists@atlas.sk Aceman] (:aceman), [mailto:richard.marti@gmail.com Richard Marti] (:paenglab)<br />
|peersemeritus=Blake Winton, Mike Conley, Kent James, Jörg Knobloch (:jorgk)<br />
|source_dirs=mail/,mail/themes/,other-licenses/branding/thunderbird/<br />
|url=https://developer.thunderbird.net/<br />
|components=Thunderbird<br />
}}<br />
<br />
{{Module<br />
|name=Build Config<br />
|description=Build Automation<br />
|owner=[mailto:rob@thunderbird.net Rob Lemley] (:rjl)<br />
|source_dirs=mail/config/, taskcluster/<br />
|peers=[mailto:mozilla@kewis.ch Philipp Kewisch] (:Fallen)<br />
|peersemeritus=Mark Banner (:standard8), Siddharth Agarwal (:sid0), Justin Wood (:callek), Joshua Cranmer (:jcranmer), Tom Prince (:tomprince)<br />
|components=Thunderbird::Build Config<br />
}}<br />
<br />
{{Module<br />
|name=Add-on Support<br />
|description=APIs to enable extensions, as well as their installation<br />
|owner=[mailto:john@thunderbird.net John Bieling] (:TbSync)<br />
|peers=[mailto:geoff@thunderbird.net Geoff Lankow] (:darktrojan), [mailto:mozilla@kewis.ch Philipp Kewisch] (:Fallen)<br />
|components=Thunderbird::Add-Ons Extensions API, Thunderbird::Add-Ons General<br />
}}<br />
<br />
{{Module<br />
|name=Instant Messaging<br />
|description=The chat and instant messaging component of Thunderbird<br />
|owner=[mailto:clokep@patrick.cloke.us Patrick Cloke] (:clokep)<br />
|ownersemeritus=[mailto:florian@mozilla.com Florian Quèze]<br />
|peers=[mailto:martin@humanoids.be Martin Giger] (:freaktechnik)<br />
|peersemeritus=[mailto:aleth@instantbird.org aleth] (:aleth), [mailto:benediktp@ymail.com Benedikt Pfeifer] (:Mic)<br />
|components=Thunderbird::Instant Messaging<br />
|source_dirs=mail/components/im/, chat/<br />
}}<br />
<br />
{{Module<br />
|name=Theme<br />
|description=The interface of Thunderbird related to the OS and custom themes<br />
|owner=[mailto:richard.marti@gmail.com Richard Marti] (:paenglab)<br />
|peers=[mailto:alessandro@thunderbird.net Alessandro Castellani] (:aleca)<br />
|peersemeritus=Josiah Bruner (:JosiahOne), Blake Winton (:bwinton), Mike Conley (:mconley)<br />
|components=Thunderbird::Theme<br />
|source_dirs=mail/themes/<br />
}}<br />
<br />
{{Module<br />
|name=Message Security<br />
|description=OpenPGP and S/MIME message security.<br />
|owner=[mailto:kaie@thunderbird.net Kai Engert] (:kaie)<br />
|source_dirs=mail/extensions/openpgp, mail/extensions/smime<br />
|peers=[mailto:patrick@enigmail.net Patrick Brunschwig], [mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin)<br />
}}<br />
<br />
{{Module<br />
|name=UX (User Experience)<br />
|description=Usability and user journey, including User Interface and Accessibility<br />
|owner=[mailto:alessandro@thunderbird.net Alessandro Castellani] (:aleca)<br />
|peers=[mailto:richard.marti@gmail.com Richard Marti] (:paenglab), [mailto:henry@thunderbird.net Henry Wilkes] (:henry), [mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin)<br />
|peersemeritus=Blake Winton (:bwinton)<br />
|components=Thunderbird::General<br />
}}<br />
<br />
{{Module<br />
|name=Website<br />
|description=The Thunderbird related pages on thunderbird.net and elsewhere.<br />
|owner=[mailto:sancus@off.net Andrei Hajdukewycz] (:sancus)<br />
|peers=[mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin), [mailto:vseerror@lehigh.edu Wayne Mery] (:wsmwk), [mailto:ryan@thunderbird.net Ryan Sipes] (:ryanleesipes), [mailto:alessandro@thunderbird.net Alessandro Castellani] (:aleca)<br />
|components=https://github.com/thundernest/thunderbird-website<br />
|source_dirs=https://github.com/thundernest/thunderbird-website<br />
}}<br />
<br />
===See also===<br />
* [[Modules/Calendar|Calendar]]<br />
* [[Modules/MailNews_Core|MailNews Core]]</div>BenBhttps://wiki.mozilla.org/index.php?title=Modules/Thunderbird&diff=1245277Modules/Thunderbird2023-01-23T20:58:22Z<p>BenB: Update Council chair: Still Berna Alp</p>
<hr />
<div><noinclude><br />
'''Only module owners may edit this page.''' <br />
<br />
They may:<br />
<br />
* update any information about their module except the name of the owner<br />
* add or remove sub-modules<br />
* change the owner of a sub-module <br />
* add emeritus owners or peers<br />
<br />
Other changes, including changes of module owner or addition/removal of modules, must be agreed with the Module Ownership Module group, probably via a discussion in [https://www.mozilla.org/about/forums/#governance mozilla.governance].<br />
</noinclude><br />
{{Module<br />
|name=Thunderbird Council<br />
|description=The Thunderbird Council is the elected governing body for the [https://www.thunderbird.net/en-US/about/ Thunderbird Project], including the code modules that develop the code in Thunderbird product(s). It is the top-level module of the project, and Peers are members of the Council.<br />
|owner=Chair 2023: [mailto:ba@thunderbird.net Berna Alp] (:ba)<br />
|peers=[mailto:ben@thunderbird.net Ben Bucksch] (:benb), [mailto:ba@thunderbird.net Berna Alp] (:ba), [mailto:danny@thunderbird.net Danny Colin], [mailto:john@thunderbird.net John Bieling] (:TbSync), Micah Ilbery, [mailto:clokep@patrick.cloke.us Patrick Cloke] (:clokep), [mailto:mozilla@kewis.ch Philipp Kewisch] (:Fallen)<br />
|url=[mailto:council@thunderbird.net The Thunderbird Council], [[Thunderbird:Home#Governance|Past Councils]]<br />
}}<br />
<br />
{{Module<br />
|name=Thunderbird<br />
|description=Standalone Mail Application.<br />
|owner=[mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin)<br />
|ownersemeritus=Mark Banner (:standard8), David Bienvenu (:bienvenu), Scott MacGregor (:mscott)<br />
|peers=[mailto:geoff@thunderbird.net Geoff Lankow] (:darktrojan), [mailto:acelists@atlas.sk Aceman] (:aceman), [mailto:richard.marti@gmail.com Richard Marti] (:paenglab)<br />
|peersemeritus=Blake Winton, Mike Conley, Kent James, Jörg Knobloch (:jorgk)<br />
|source_dirs=mail/,mail/themes/,other-licenses/branding/thunderbird/<br />
|url=https://developer.thunderbird.net/<br />
|components=Thunderbird<br />
}}<br />
<br />
{{Module<br />
|name=Build Config<br />
|description=Build Automation<br />
|owner=[mailto:rob@thunderbird.net Rob Lemley] (:rjl)<br />
|source_dirs=mail/config/, taskcluster/<br />
|peers=[mailto:mozilla@kewis.ch Philipp Kewisch] (:Fallen)<br />
|peersemeritus=Mark Banner (:standard8), Siddharth Agarwal (:sid0), Justin Wood (:callek), Joshua Cranmer (:jcranmer), Tom Prince (:tomprince)<br />
|components=Thunderbird::Build Config<br />
}}<br />
<br />
{{Module<br />
|name=Add-on Support<br />
|description=APIs to enable extensions, as well as their installation<br />
|owner=[mailto:john@thunderbird.net John Bieling] (:TbSync)<br />
|peers=[mailto:geoff@thunderbird.net Geoff Lankow] (:darktrojan), [mailto:mozilla@kewis.ch Philipp Kewisch] (:Fallen)<br />
|components=Thunderbird::Add-Ons Extensions API, Thunderbird::Add-Ons General<br />
}}<br />
<br />
{{Module<br />
|name=Instant Messaging<br />
|description=The chat and instant messaging component of Thunderbird<br />
|owner=[mailto:clokep@patrick.cloke.us Patrick Cloke] (:clokep)<br />
|ownersemeritus=[mailto:florian@mozilla.com Florian Quèze]<br />
|peers=[mailto:martin@humanoids.be Martin Giger] (:freaktechnik)<br />
|peersemeritus=[mailto:aleth@instantbird.org aleth] (:aleth), [mailto:benediktp@ymail.com Benedikt Pfeifer] (:Mic)<br />
|components=Thunderbird::Instant Messaging<br />
|source_dirs=mail/components/im/, chat/<br />
}}<br />
<br />
{{Module<br />
|name=Theme<br />
|description=The interface of Thunderbird related to the OS and custom themes<br />
|owner=[mailto:richard.marti@gmail.com Richard Marti] (:paenglab)<br />
|peers=[mailto:alessandro@thunderbird.net Alessandro Castellani] (:aleca)<br />
|peersemeritus=Josiah Bruner (:JosiahOne), Blake Winton (:bwinton), Mike Conley (:mconley)<br />
|components=Thunderbird::Theme<br />
|source_dirs=mail/themes/<br />
}}<br />
<br />
{{Module<br />
|name=Message Security<br />
|description=OpenPGP and S/MIME message security.<br />
|owner=[mailto:kaie@thunderbird.net Kai Engert] (:kaie)<br />
|source_dirs=mail/extensions/openpgp, mail/extensions/smime<br />
|peers=[mailto:patrick@enigmail.net Patrick Brunschwig], [mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin)<br />
}}<br />
<br />
{{Module<br />
|name=UX (User Experience)<br />
|description=Usability and user journey, including User Interface and Accessibility<br />
|owner=[mailto:alessandro@thunderbird.net Alessandro Castellani] (:aleca)<br />
|peers=[mailto:richard.marti@gmail.com Richard Marti] (:paenglab), [mailto:henry@thunderbird.net Henry Wilkes] (:henry), [mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin)<br />
|peersemeritus=Blake Winton (:bwinton)<br />
|components=Thunderbird::General<br />
}}<br />
<br />
{{Module<br />
|name=Website<br />
|description=The Thunderbird related pages on thunderbird.net and elsewhere.<br />
|owner=[mailto:sancus@off.net Andrei Hajdukewycz] (:sancus)<br />
|peers=[mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin), [mailto:vseerror@lehigh.edu Wayne Mery] (:wsmwk), [mailto:ryan@thunderbird.net Ryan Sipes] (:ryanleesipes), [mailto:alessandro@thunderbird.net Alessandro Castellani] (:aleca)<br />
|components=https://github.com/thundernest/thunderbird-website<br />
|source_dirs=https://github.com/thundernest/thunderbird-website<br />
}}<br />
<br />
===See also===<br />
* [[Modules/Calendar|Calendar]]<br />
* [[Modules/MailNews_Core|MailNews Core]]</div>BenBhttps://wiki.mozilla.org/index.php?title=Consulting&diff=1244665Consulting2022-11-21T13:18:59Z<p>BenB: /* Beonex */ 2 words</p>
<hr />
<div>= Consulting =<br />
<br />
== Motivation ==<br />
<br />
Many companies want services that Mozilla does not offer, including paid support, deployment assistance and custom add-ons. The goal of this page is to provide a list of experts in various Mozilla technologies that are available for these type of engagements. <br />
<br />
== Companies ==<br />
<br />
=== Beonex ===<br />
<br />
[https://www.beonex.com Beonex] helps companies to create Mozilla-based products including creating their own applications based on XULRunner, Firefox and Thunderbird extensions, and embedding Mozilla technologies in their products. Being a development contributor to Mozilla since over 20 years, Beonex can also help make changes to core Firefox and Thunderbird products.<br />
<br />
For our customers, we consult on the best approach to a problem, design their applications and lead the development effort, help with Mozilla-specific tasks, or help make the necessary changes for large deployments. Our past and current customers include the German Office of Foreign Affairs, TomTom and Bay Area startups.<br />
[mailto:dev.website@beonex.com Please tell us how we can help you].<br />
<br />
=== Kaply Consulting ===<br />
<br />
[http://consulting.kaply.com Kaply Consulting] specializes in customizing Firefox and creating Firefox add-ons. They can also help with enterprise deployment of Firefox.<br />
<br />
They are based in Austin, Texas, USA and can be reached at [mailto:consulting@kaply.com consulting@kaply.com].<br />
<br />
=== Mozdev Group, Inc. ===<br />
<br />
[https://www.mozdevgroup.com/ Mozdev Group, Inc.] is a Mozilla software development company servicing all aspects of Mozilla based technologies. If your company is looking for a solution using Mozilla, MDG can provide the professional services required to deliver high quality commercial software to meet any production release schedule.<br />
<br />
They can be reached at [mailto:information@mozdevgroup.com?subject=Mozdev%20Group%20Additional%20Info information@mozdevgroup.com].<br />
<br />
=== Pearl Crescent, LLC ===<br />
[http://pearlcrescent.com/services/ Pearl Crescent] specializes in creating Firefox add-ons and other software based on Mozilla technologies. Pair programming and code reviews are used to avoid bugs and security holes. Our engineers have extensive experience designing, implementing, and testing software on Windows, Macintosh, and POSIX (Unix and Linux) systems. <br />
<br />
Contact Pearl Crescent at [mailto:info@pearlcrescent.com?subject=Mozilla%20Consulting info@pearlcrescent.com].<br />
<br />
=== Salsita Software ===<br />
<br />
[http://www.salsitasoft.com/ Salsita Software] specializes in development of browser extensions and plugins for Firefox, Internet Explorer, Chrome and other web browsers. They also develop WebRunner, a single-site browser based on Firefox that enables the packaging and distribution of standalone web applications.<br />
<br />
Contact them [http://www.salsitasoft.com/contact-us/ on their website].</div>BenBhttps://wiki.mozilla.org/index.php?title=Consulting&diff=1244664Consulting2022-11-21T13:03:17Z<p>BenB: /* Briks Software */ Remove Briks. Since 8 years now, they state on this page that they are not accepting clients</p>
<hr />
<div>= Consulting =<br />
<br />
== Motivation ==<br />
<br />
Many companies want services that Mozilla does not offer, including paid support, deployment assistance and custom add-ons. The goal of this page is to provide a list of experts in various Mozilla technologies that are available for these type of engagements. <br />
<br />
== Companies ==<br />
<br />
=== Beonex ===<br />
<br />
[https://www.beonex.com Beonex] helps companies to create Mozilla-based products including creating their own applications based on XULRunner, Firefox and Thunderbird extensions, and embedding Mozilla technologies in their products. Being a contributor to Mozilla since over 10 years, Beonex can also help make changes to core Firefox and Thunderbird products.<br />
<br />
For our customers, we consult on the best approach to a problem, design their applications and lead the development effort, help with Mozilla-specific tasks, or help make the necessary changes for large deployments. Our past and current customers include the German Office of Foreign Affairs, TomTom and Bay Area startups.<br />
[mailto:dev.website@beonex.com Please tell us how we can help you].<br />
<br />
=== Kaply Consulting ===<br />
<br />
[http://consulting.kaply.com Kaply Consulting] specializes in customizing Firefox and creating Firefox add-ons. They can also help with enterprise deployment of Firefox.<br />
<br />
They are based in Austin, Texas, USA and can be reached at [mailto:consulting@kaply.com consulting@kaply.com].<br />
<br />
=== Mozdev Group, Inc. ===<br />
<br />
[https://www.mozdevgroup.com/ Mozdev Group, Inc.] is a Mozilla software development company servicing all aspects of Mozilla based technologies. If your company is looking for a solution using Mozilla, MDG can provide the professional services required to deliver high quality commercial software to meet any production release schedule.<br />
<br />
They can be reached at [mailto:information@mozdevgroup.com?subject=Mozdev%20Group%20Additional%20Info information@mozdevgroup.com].<br />
<br />
=== Pearl Crescent, LLC ===<br />
[http://pearlcrescent.com/services/ Pearl Crescent] specializes in creating Firefox add-ons and other software based on Mozilla technologies. Pair programming and code reviews are used to avoid bugs and security holes. Our engineers have extensive experience designing, implementing, and testing software on Windows, Macintosh, and POSIX (Unix and Linux) systems. <br />
<br />
Contact Pearl Crescent at [mailto:info@pearlcrescent.com?subject=Mozilla%20Consulting info@pearlcrescent.com].<br />
<br />
=== Salsita Software ===<br />
<br />
[http://www.salsitasoft.com/ Salsita Software] specializes in development of browser extensions and plugins for Firefox, Internet Explorer, Chrome and other web browsers. They also develop WebRunner, a single-site browser based on Firefox that enables the packaging and distribution of standalone web applications.<br />
<br />
Contact them [http://www.salsitasoft.com/contact-us/ on their website].</div>BenBhttps://wiki.mozilla.org/index.php?title=Consulting&diff=1244663Consulting2022-11-21T12:57:55Z<p>BenB: /* Beonex */ https</p>
<hr />
<div>= Consulting =<br />
<br />
== Motivation ==<br />
<br />
Many companies want services that Mozilla does not offer, including paid support, deployment assistance and custom add-ons. The goal of this page is to provide a list of experts in various Mozilla technologies that are available for these type of engagements. <br />
<br />
== Companies ==<br />
<br />
=== Beonex ===<br />
<br />
[https://www.beonex.com Beonex] helps companies to create Mozilla-based products including creating their own applications based on XULRunner, Firefox and Thunderbird extensions, and embedding Mozilla technologies in their products. Being a contributor to Mozilla since over 10 years, Beonex can also help make changes to core Firefox and Thunderbird products.<br />
<br />
For our customers, we consult on the best approach to a problem, design their applications and lead the development effort, help with Mozilla-specific tasks, or help make the necessary changes for large deployments. Our past and current customers include the German Office of Foreign Affairs, TomTom and Bay Area startups.<br />
[mailto:dev.website@beonex.com Please tell us how we can help you].<br />
<br />
=== Briks Software ===<br />
<br />
[[File:Briks.v75.png|left|Briks Logo]]'''Briks is currently not accepting new clients.''' [http://briks.si Briks Software] is a software company dedicated to helping clients develop and deploy Web Applications. The current company focus is on Mozilla applications. Briks builds desktop and [http://www.mozilla.com/mobile/ mobile] [https://addons.mozilla.org/en-US/firefox/user/32166 Add-ons] (extensions and themes) for Firefox, Thunderbird, and other Mozilla-based products. We can work on anything Mozilla/Browser related, including [http://en.wikipedia.org/wiki/XULRunner XULRunner applications], [https://jetpack.mozillalabs.com/ Jetpacks], content scripts, and more.<br />
<br />
Briks’ headquarters is in Slovenia at the heart of Europe, with a development team that spans out further. Our clients are global. You can get in touch via the [http://briks.si/kontakt/ Briks Contact page].<br />
<br />
=== Kaply Consulting ===<br />
<br />
[http://consulting.kaply.com Kaply Consulting] specializes in customizing Firefox and creating Firefox add-ons. They can also help with enterprise deployment of Firefox.<br />
<br />
They are based in Austin, Texas, USA and can be reached at [mailto:consulting@kaply.com consulting@kaply.com].<br />
<br />
=== Mozdev Group, Inc. ===<br />
<br />
[https://www.mozdevgroup.com/ Mozdev Group, Inc.] is a Mozilla software development company servicing all aspects of Mozilla based technologies. If your company is looking for a solution using Mozilla, MDG can provide the professional services required to deliver high quality commercial software to meet any production release schedule.<br />
<br />
They can be reached at [mailto:information@mozdevgroup.com?subject=Mozdev%20Group%20Additional%20Info information@mozdevgroup.com].<br />
<br />
=== Pearl Crescent, LLC ===<br />
[http://pearlcrescent.com/services/ Pearl Crescent] specializes in creating Firefox add-ons and other software based on Mozilla technologies. Pair programming and code reviews are used to avoid bugs and security holes. Our engineers have extensive experience designing, implementing, and testing software on Windows, Macintosh, and POSIX (Unix and Linux) systems. <br />
<br />
Contact Pearl Crescent at [mailto:info@pearlcrescent.com?subject=Mozilla%20Consulting info@pearlcrescent.com].<br />
<br />
=== Salsita Software ===<br />
<br />
[http://www.salsitasoft.com/ Salsita Software] specializes in development of browser extensions and plugins for Firefox, Internet Explorer, Chrome and other web browsers. They also develop WebRunner, a single-site browser based on Firefox that enables the packaging and distribution of standalone web applications.<br />
<br />
Contact them [http://www.salsitasoft.com/contact-us/ on their website].</div>BenBhttps://wiki.mozilla.org/index.php?title=Consulting&diff=1244662Consulting2022-11-21T12:57:01Z<p>BenB: /* Beonex */ Update website URL and email address</p>
<hr />
<div>= Consulting =<br />
<br />
== Motivation ==<br />
<br />
Many companies want services that Mozilla does not offer, including paid support, deployment assistance and custom add-ons. The goal of this page is to provide a list of experts in various Mozilla technologies that are available for these type of engagements. <br />
<br />
== Companies ==<br />
<br />
=== Beonex ===<br />
<br />
[http://www.beonex.com Beonex] helps companies to create Mozilla-based products including creating their own applications based on XULRunner, Firefox and Thunderbird extensions, and embedding Mozilla technologies in their products. Being a contributor to Mozilla since over 10 years, Beonex can also help make changes to core Firefox and Thunderbird products.<br />
<br />
For our customers, we consult on the best approach to a problem, design their applications and lead the development effort, help with Mozilla-specific tasks, or help make the necessary changes for large deployments. Our past and current customers include the German Office of Foreign Affairs, TomTom and Bay Area startups.<br />
[mailto:dev.website@beonex.com Please tell us how we can help you].<br />
<br />
=== Briks Software ===<br />
<br />
[[File:Briks.v75.png|left|Briks Logo]]'''Briks is currently not accepting new clients.''' [http://briks.si Briks Software] is a software company dedicated to helping clients develop and deploy Web Applications. The current company focus is on Mozilla applications. Briks builds desktop and [http://www.mozilla.com/mobile/ mobile] [https://addons.mozilla.org/en-US/firefox/user/32166 Add-ons] (extensions and themes) for Firefox, Thunderbird, and other Mozilla-based products. We can work on anything Mozilla/Browser related, including [http://en.wikipedia.org/wiki/XULRunner XULRunner applications], [https://jetpack.mozillalabs.com/ Jetpacks], content scripts, and more.<br />
<br />
Briks’ headquarters is in Slovenia at the heart of Europe, with a development team that spans out further. Our clients are global. You can get in touch via the [http://briks.si/kontakt/ Briks Contact page].<br />
<br />
=== Kaply Consulting ===<br />
<br />
[http://consulting.kaply.com Kaply Consulting] specializes in customizing Firefox and creating Firefox add-ons. They can also help with enterprise deployment of Firefox.<br />
<br />
They are based in Austin, Texas, USA and can be reached at [mailto:consulting@kaply.com consulting@kaply.com].<br />
<br />
=== Mozdev Group, Inc. ===<br />
<br />
[https://www.mozdevgroup.com/ Mozdev Group, Inc.] is a Mozilla software development company servicing all aspects of Mozilla based technologies. If your company is looking for a solution using Mozilla, MDG can provide the professional services required to deliver high quality commercial software to meet any production release schedule.<br />
<br />
They can be reached at [mailto:information@mozdevgroup.com?subject=Mozdev%20Group%20Additional%20Info information@mozdevgroup.com].<br />
<br />
=== Pearl Crescent, LLC ===<br />
[http://pearlcrescent.com/services/ Pearl Crescent] specializes in creating Firefox add-ons and other software based on Mozilla technologies. Pair programming and code reviews are used to avoid bugs and security holes. Our engineers have extensive experience designing, implementing, and testing software on Windows, Macintosh, and POSIX (Unix and Linux) systems. <br />
<br />
Contact Pearl Crescent at [mailto:info@pearlcrescent.com?subject=Mozilla%20Consulting info@pearlcrescent.com].<br />
<br />
=== Salsita Software ===<br />
<br />
[http://www.salsitasoft.com/ Salsita Software] specializes in development of browser extensions and plugins for Firefox, Internet Explorer, Chrome and other web browsers. They also develop WebRunner, a single-site browser based on Firefox that enables the packaging and distribution of standalone web applications.<br />
<br />
Contact them [http://www.salsitasoft.com/contact-us/ on their website].</div>BenBhttps://wiki.mozilla.org/index.php?title=Talk:Thunderbird:Home&diff=1241358Talk:Thunderbird:Home2022-03-22T15:47:22Z<p>BenB: Remove spam</p>
<hr />
<div><div style="border: thin dotted #aaa; padding: 10px;"><br />
'''THIS WIKI DOCUMENT IS NOT A SUITABLE LOCATION FOR USER REQUESTS AND FEEDBACK. PLEASE DO NOT COMMENT HERE.'''<br><br />
'''* To get help or to ask question please visit [https://support.mozilla.org/products/thunderbird Thunderbird Support (SUMO)]. To make a suggestion please [https://bugzilla.mozilla.org/enter_bug.cgi?product=Thunderbird&bug_severity=enhancement file an enhancement request]. To report a bug use [https://bugzilla.mozilla.org/enter_bug.cgi?product=Thunderbird bugzilla].'''</div><br />
<br />
= Archive =<br />
<br />
Previous archives of [[Talk:Thunderbird:Archived_Home_Page|Thunderbird discussions]] are still available.<br />
<br />
A feature I really do not welcome is the '''user@domain check''' on the shape of addresses entered. The reason I moved from ''Outlook'' to ''Thunderbird'' was that I found Outlook started to impose an xxx@xxx filter on my addresses. In order to keep under my control what e-mails go out of my computer, I use a simple means for years: I store all the addresses in the format <me><a secret sequence><domain>. Immediately before dispatching, I manually replace <a secret sequence> for @, which requires just a modicum of effort, a good price for the feeling of secrecy. A side benefit is that I cannot dispatch an e-mail by mistake any earlier than I consider it ready.<br />
<br />
From the moment Thunderbird, too, started to apply this inexpensive (and annoying, in my view) filter, I am forced (not willing to leave Tb just because of that) manually to edit abook.mab. Due to the fortunate fact that my address book is largely built already, I need to hack it only occasionally. Nevertheless, beside being an annoyance, general users such as me should not be expected to fiddle around with parameter files. Cannot this feature be made switchable? I mean, the @-to-replace-whatever might be specific for very few users (a very good measure, let me recommend it); quite a few, in turn, might find useful the possibility to store incomplete addresses for various reasons. The xxx@xxx filter, so easy to program, may have a poor effect for them, given that incomplete addresses cannot dispatch anyway.<br />
<br />
= Discussions =<br />
<br />
Well, hell... no response in the year or so since I posted here, and I’m STILL not sure I’m in the right place. Making suggestions for the improvement of Thunderbird (and, in my case, Eudora) should be much, much simpler. A link in the menu bar would be nice. <br />
<br />
Well, in case ANYone’s reading this, my two pet peeves, the first of which almost makes Eudora unusable: 1) When I click on a letter or attachment to open it, if it does not open promptly, that does not mean I want to, for example, create a second sound file on my computer’s desktop. Or thirty. And once I realize that Eudora IS conjuring up 30 iterations of my message, like the sorceror’s apprentice’s multitude of brooms, there is no way to STOP it short of force-quitting. 2) When someone on one of my group lists changes his/her email address, Eudora will not mail my letter to the others on the list, requiring me, first, to eliminate that one obsolete address. But that is not so easy to do as Eudora, unlike any other email client I’ve used including the OLD Eudora, does not show the individual names, just the list name, necessitating going into the address book.<br />
<br />
~ John Mayer<br />
<br />
Please add a link to [[Thunderbird/Experiments]] either here or in [[Thunderbird:Dev]] after these add-on prototypes have been recently introduced as a major vehicle for feature development. --[[User:Rsx11m|Rsx11m]] 11:34, 7 August 2010 (PDT)<br />
<br />
Well, I can see this is not going to be simple. I am not, at this point, even sure I’m following the proper protocol for contributing to this discussion at all; that is, by editing the page. Secondly, I”m not sure I’m in the right place. I am using Eudora, but find no discussion site dedicated to that variation. So I’ll wait for clarification on those two points before addressing my specific suggestions and observations on Eudora, which, btw, I am very glad to see being preserved and brought up to date by you fine Mozilla folks. ------[[User:johnmayer]] 01:23, 28 February 2010 (EST)<br />
<br />
<br />
I would like to have it where when people click Forward All or send a message to more than one (maybe can set limit?) recipient that the address are put into Bcc: this way not every one need know my email address and possible cut down on spam. This is something I wish all email clients did and maybe something that could be implemented on servers as well. -ProfTheory 2009-Oct-06<br />
<br />
''The inability to import to Thunderbird existing message structures of current users of Microsoft e-mail products (i.e., all the messages contained in message folders and sub-folders of Outlook Express, Outlook, and Windows Mail) drastically limits migration to Thunderbird. After all, the millions of typical users out there are likely to have built up an extensive structure of folders to organize their messages. The current alternative of first replicating an entire message folder structure in Thunderbird and then separately importing the messages for that folder using the extension ImportExportTools -- in my case (yes, I have a vested interest in this issue!) over a hundred times! -- is clearly impractical. I contacted the creater of the extension ImportExportTools, Paolo Kaosmos, about this issue. He has no plans to address the issue.''<br />
<br />
I like Tbird so far but have two problems that appear to be bugs. I'm using the Penelope extension and MagicSLR.<br />
1. The "priority" column priority marks seem to be invisible. The priorities are there, I can sort by priority, but I can't SEE that priority.<br />
2. I don't want to see all columns in folders, and I found the control that lets me remove columns. But my choice doesn't persist -- next time I fire up tbird, all the columns are back. --[[User:Billcoffin|Billcoffin]] 17:32, 29 August 2008 (UTC)<br />
<br />
<br />
I love Thunderbird. I have been switching people to it for a while but one issue that keeps coming up is it does not sync with PDA units (Black Berry or Palm). I wish someone could come up with a sync plugin to use. Other then that keep up the great work.<br />
--[[User:mmmoshko|Matee Moshkovits]] 22:42, 28 August 2008 (EST)<br />
<br />
For me to switch to using Thunderbird I simply need better control of the sending and receiving processes. I have many email accounts so I need to be able to see what accounts are processed and the processing progress per account. Then to be able to stop processing or/and choose a specific account to process.<br />
--[[User:Ivankb|Ivankb]] 10:58, 26 July 2008 (GMT)<br />
<br />
One feature I miss from Thunderbird that is in other mail programs like alpine is to be able to '''extract RFC822 mail attachments''' and refile to another folder (or even just by default to the current folder). Mail forwarded as an attachment preserves all the headers of the original mail.<br />
--[[User:Greenpossum|Greenpossum]] 08:18, 5 June 2008 (PDT)<br />
<br />
One simple request Please use a better spell check dictionary. Very often the suggested words that come up are just bizarre! Please run the betas past someone who can spell. I happen to be dyslexic so have extreme problems leading to enough frustration to seriously think about Outlook. The dictionary from Open Office looks like it would be a big help and aren't a bunch of you the same guys doing that work? This is my biggest software wish on my whole computer. Please!<br />
<br />
Please add filter actions that relate to the Address Book, e.g.: Add Sender to Address Book and include in a certain group, Remove Sender from Address Book, Redirect Message to a person or group from the Address Book, and send a fixed message to a person or group from the Address Book.<br />
<br />
For Mac Thunderbird, please add the ability to import from Apple mail! (Or, I should say, the ability to import ''easily''. There is a clunky workaround that isn't really practical if you have a lot of mailboxes.) I suspect that adding an automated process to import from Mail would be the single most effective step you could take to increase adoption of Thunderbird by Mac users. --[[User:Jacobw|Jacobw]] 04:14, 7 May 2008 (PDT)<br />
<br />
Address Book maintenance would be much easier (less painless) if it contained 'date_last_sent' and 'date_last_recvd'. Anyone who has ever tried synchronizing six different address books will agree ! <br />
--[[User:Acrizona]] - 17 Sept 2009 - <br />
<br />
It would be great (and hopefully simple to add) if we could have filter/view options that supported "is blank/empty" or "is not blank/empty." That way it would be easy to create a filter to show all untagged messages for instance.<br />
--[[User:Chrisbryant|Chrisbryant]] 12:30, 23 May 2008 (PDT)<br />
<br />
I use Thunderbird on LTSP thin clients over remote X11. We see some significant issues (difficult to pin down as specific bugs) that appear to be caused by threading races. Problems include:<br />
<br />
- IMAP backend becoming nonresponsive. Doesn't quit with tbird. Only responds to SIGKILL.<br />
- Attachments being truncated on save<br />
<br />
so I suspect some investigation into tbird's threading and locking might be warranted for 3.0 .<br />
<br />
--[[User:Ringerc|Ringerc]] 01:05, 17 June 2008 (PDT)<br />
<br />
- IMAP problem here also. It has been configured to take mails always when Thunderbird has been started up. Takes 100% from processor and frontend is unresponsive, only SIGKILL stops wasting processor time. Same IMAP settings worked earlier. Upgrade from Ubuntu 8.04 to 8.10 didn't done any magic.<br />
<br />
--[[User:PC-Räätäli|PC-Räätäli]] 27 November 2008<br />
<br />
I would find useful to have the possibility to make a selective autoquotation when replying: I select the wanted part and i click on reply to get the selected text automaticaly quoted in the reply<br />
<br />
as a user of a lot of yahoo mailing list I would like also a "reply to the sender only" button to reply privately to the sender (the from email, not the reply-to or the sender adress for exemple:<br />
<br />
From: "thierry2" <xxxx@orange.fr><br />
Sender: planet-soaring@yahoogroupes.fr<br />
Reply-To: planet-soaring@yahoogroupes.fr--[[User:Jfpion|Jfpion]] 23:48, 11 July 2008 (PDT)<br />
<br />
<br />
----<br />
Since <br />
'''[https://wiki.mozilla.org/Talk:Thunderbird:Home#Major_Usability_Redesign_of_Folders_.26_Threads_.28in_4_Steps.29 this groundbreaking contribution] by Thomas Landauer''' is still valid (and probably will be, even for Thunderbird v4), I'd like to point everybody's - especially the developers' - attention to it.<br />
<br />
--[[User:David.P|David.P]] 07:26, 14 August 2008 (UTC)<br />
----<br />
<br />
A few minor problems. When I attempt to see new messages, I get a report that 'the requested message could not be converted to an RFC-882 compatible format', and then the messages are opened. When I attempt to delete a message, the system tells me the same thing, but dragging messages to 'trash' seems to do the job. A set of good instructions is needed.<br />
<br />
----<br />
Re: To improve usability<br />
Message List.<br />
It would be nice to have a "delete message" column in the message list.<br />
The "junk status" column is a nice feature for marking and deleting spam. It is convenient. But I find that I have to stop myself from clicking it to delete an unwanted, but non-spam email. I don't want to mess up the bayesian training, so I need to use the keyboard or the delete icon up top. So a delete column would be nice.<br />
<br />
I would like an option to have the message list "tail" as new emails arrive, rather than requiring me to manually scroll down.<br />
<br />
Multiple email accounts.<br />
I can already choose alternate Sent, Drafts, and Templates folders. Let me choose alternate Junk and Trash folders too.<br />
I can already choose to send mail to the inbox of another account. Let me choose to use a subfolder of the other inbox.<br />
An option to auto expand folders with new or unread emails. If an inbox filter has sent a new email to a subfolder, it is a hassle to have to expand the folders to expose it.<br />
Message Body as HTML vs text. Allow HTML vs text on a per account basis, rather than a application wide setting.<br />
A Filter for "arrived through account". If one inbox with subfolders is used for multiple accounts, incoming bcc messages are hard to handle. It would be nice to be able to add a filter for incoming account X = filter action. But this would not be needed, if an account inbox could be set to a subfolder of another inbox. [[User:Simpson|Simpson]] 19:15, 8 January 2009 (UTC)<br />
<br />
<br />
== Delete Action (move to previous - or next unread message) ==<br />
<br />
I like to display my mailbox with the newest messages at the top (sorted by the order received). I would like to be able to read through the most recent messages in chronological order (so from the bottom to top), but when I delete a message it automatically moves down to the next message which is backwards in time (and one I have already read). Is there any way to include an option so Thunderbird can select the previous message in the list when the current one is deleted? --[[User:John1980|John1980]] 20:42, 9 November 2009 (UTC)<br />
<br />
<br />
== Side/Top Tab Navigation (UI) ==<br />
<br />
Improve Graphic user interface of email client by introducing Tab navigation. Tab Navigation groups together the similar functions of the email client (such as compose and draft) to improve productivity and reduce visual pollution on-screen. As well as this allows for the ‘flowing’ of buttons in relating to current Tab navigation group (Figure 2). Tab Navigation can be both vertical (on the left) and horizontal (along the top). <br />
<br />
ActiveRead (Figure 2)allows more message details to be displayed in the inbox. How much of the message is displayed is dependent on the user but essentially whole message previews are possible. <br />
<br />
Figure 1: http://www.flickr.com/photos/34337875@N02/3194799979/<br />
Figure 2: http://www.flickr.com/photos/34337875@N02/3195722740/<br />
<br />
<br />
== Use OS TLS/SSL Certificate Store instead of local store ==<br />
<br />
Thunderbird (and Firefox) should use the Operating System's SSL Certificate repository instead of a local store. There is no reason to store the same information twice and integration with the OS makes system administration much easier.<br />
<br />
For example, a sysadmin should be able to distribute a self-signed CA cert to all the hosts she manages and not worry about Thunderbird having the cert or not.<br />
<br />
For Linux look in (the path should be configurable) by default:<br> <br />
debian/ubuntu: /etc/ssl/certs/<br><br />
redhat/centos: /usr/share/ssl/certs/<br><br />
(see what other big distros use)<br />
<br />
At the very least, if a local store isn't going away, there should be an unattended way of adding a cert such that all Thundebird users on a host use the cert.<br />
<br />
== Major Usability Redesign of Folders & Threads (in 4 Steps) ==<br />
=== Step 1: Combined Sender/Receiver Column ===<br />
'''Problem:''' Currently, in each custom mail folder there is a column for the sender of the message. For outgoing messages this is always ''your'' name. But you can't see the receiver! (Sure you can display the column for the receiver, but the result are two redundant columns with only one information, since in one of the two is always your own name).<br />
<br />
[[Image:CombinedToFromColumn.gif|Screenshot: Combined To/From-Column]]<br />
<br />
'''Proposed Improvement:''' Combine the sender and receiver columns to one "who" column. This column would always show the other person's name, and never your own. To differentiate between incoming and outgoing messages, use emphasis (e.g. print outgoing messages in italics) and/or prefix outgoing messages with boldface/italics "To: " and/or use another (small) column showing an icon. Best solution, of course, would be to let the user select the way of emphasizing (italics, color, icon(s), etc.).<br />
<br />
This was already filed as: [https://bugzilla.mozilla.org/show_bug.cgi?id=36489 Bug 36489] (for SeaMonkey), [https://bugzilla.mozilla.org/show_bug.cgi?id=274232 Bug 274232] (for Thunderbird), and [https://bugzilla.mozilla.org/show_bug.cgi?id=359270 Bug 359270] (for Penelope, the Mozilla follow-up to Eudora) and is related to [[#Folder_Personalization_and_Control|Folder Personalization and Control]] (second point).<br />
<br />
This step is, by and large, resolved with the extension [http://www.ggbs.de/extensions/ShowInOut.html Show InOut]. So my suggestion is to include this extension's functionality into Thunderbird and set it as the default behavior.<br />
<br />
=== Step 2: Combined "Unsent Messages", "Drafts" and "Sent" Folder ===<br />
'''Problem:''' Currently, the folders "Unsent Messages" and "Drafts" are (almost) empty for (almost) all users (almost) all of the time. The purpose of having three different outgoing folders (Unsent Messages, Drafts, Sent) is only to differentiate between the status of the mail.<br />
<br />
This has already been filed as [https://bugzilla.mozilla.org/show_bug.cgi?id=197228 Bug 197228]<br />
and was suggested for Thunderbird 2.0: [http://wiki.mozilla.org/Talk:Thunderbird:2.0_Product_Planning#UI_Liftup_and_stuff UI Liftup and stuff] (point 5.)<br />
<br />
[[Image:CombinedOutFolder.gif]]<br />
<br />
'''Proposed Improvement:''' Combine these three folders to one "Out" folder. And show the status of the message by using emphasis (bold face for messages not yet sent) and/or a (small) column showing a status icon.<br />
<br />
'''Rationale:''' From a logical point of view, an outgoing message not yet sent is equivalent to an incoming message not yet read. But only the latter are displayed in bold face in one combined "Inbox" folder (containing read messages as well as unread messages). So why not use the same simple system for outgoing as well?<br />
<br />
'''Note:''' By using different status icons, you could easily differentiate between sent drafts, unsent-but-saved drafts, messages ready to be sent, messages whose sending failed, etc., as suggested for Thunderbird 2.0: [http://wiki.mozilla.org/Talk:Thunderbird:2.0_Product_Planning#Differentiate_between_sent_and_unsent-but-saved_drafts Differentiate between sent and unsent-but-saved drafts]<br />
<br />
=== Step 3: Combined "In" and "Out" Folder ===<br />
'''Problem:''' Currently, if a user sticks with the default folders "Inbox" and "Sent", incoming and outgoing messages are strictly separated. But if the user creates custom folders, they contain both incoming and outgoing messages. This is inconsistent.<br />
<br />
'''Proposed Improvement:''' Combine the folders "Inbox" and "Out" (from Step 2) to one "Main" folder. The differentiation between incoming and outgoing messages is achieved through emhpasis (e.g. italics, see Step 1). And the differentiation between sent and unsent is achieved through bold face (or icon, see Step 2).<br />
<br />
'''Rationale:''' Any custom folder is a combined incoming/outgoing folder. Why shouldn't this system work for the program's default folders too?<br />
<br />
Related is [https://bugzilla.mozilla.org/show_bug.cgi?id=301084 Bug 301084] which requests the option to automatically store replies in the same folder in which the original message is stored in. I'm suggesting the same thing for the default In/Out folders too.<br />
<br />
This step can be achieved by applying this setting:<br><br />
Tools > Account Settings > Copies & Folders > Place a copy in: > Other: > Local Folders > Inbox.<br />
<br>So my suggestion is to set this as the default behavior (plus rename "Inbox" to "Main").<br />
<br />
=== Step 4: Threading/Grouping of Messages ===<br />
'''Rationale:''' Most email communication is threaded: I write a message, I receive a reply, I reply again, and so on. Single messages are the exception, not the rule.<br />
<br />
'''Problem:''' Currently, threaded messages are treated as exceptions. The message grouping function is ridiculous & unusable.<br />
<br />
'''Proposed Improvements:''' See these three suggestions for Thunderbird 2.0:<br />
<br>[http://wiki.mozilla.org/Talk:Thunderbird:2.0_Product_Planning#Improved_sorting_and_grouping_of_messages Improved sorting and grouping of messages] (points 1. through 4.)<br />
<br>[http://wiki.mozilla.org/Talk:Thunderbird:2.0_Product_Planning#sorting_messages_by_subject_.28as_thread.29 sorting messages by subject (as thread)] (points (1) through (3))<br />
<br>[http://wiki.mozilla.org/Talk:Thunderbird:2.0_Product_Planning#UI_Liftup_and_stuff UI Liftup and stuff] (point 4.).<br />
<br>Plus this one here:<br />
<br>[[#Feature_Request:_Editing_SUBJECT_of_received_messages|Feature Request: Editing SUBJECT of received messages]]<br />
<br />
'''In short:''' The entire system should work as the folder tree in Windows Explorer: Expand&collapse threads, drag&drop messages, rename subject, and so on.<br />
<br />
I list this as Step 4 here because to me such a grouping/threading feature only makes sense if it encompasses incoming as well as outgoing messages. There's no point in having "parallel" threads in the folders "Inbox" and "Sent".<br />
<br />
--[[User:ThomasLandauer|ThomasLandauer]] 07 July 2007<br />
<br />
Hey Thomas -- have you put all this information about UI and usage overhaul together? This is not less than MIND-BOGGLING, and should get as much community attention as possible.<br />
<br />
This is especially valid for the part:<br />
<br />
'''The entire system should work as the folder tree in Windows Explorer: Expand&collapse threads, drag&drop messages, rename, and so on.'''<br />
<br />
Your above steps 1 through 4 actually are a '''complete revolution''' and redefinition of what an e-mail client actually should do. I KNOW that one day every proper e-mail client will be acting '''exactly''' like this (because mine, and probably yours as well, does already; and since this is like "the invention of the wheel" to me ;).<br />
<br />
Although your article possibly points a long way into the future of e-mail, I hope that it won't take like 5 to 10 years to accomplish these fantastic features...<br />
<br />
/[[User:TBuser|TBuser]] - 02 Sept 2009 - <br />
Why not also separate grouping and sorting. I would LOVE to see an option to 'group by sender' while also applying a 'sort by date' arrangement. Thus all messages in the folder being viewed would be organized by sender, and the senders would be arranged in order of latest message received. This would allow a much easier method of managing incoming messages.<br />
<br />
/<br />
<br />
== More of a Server-client Approach to folders? ==<br />
<br />
Noting the number of suggestions to do with importing/viewing/organizing messages in folders, might it be a good idea to take the client-server approach further to allow more flexibility and minimize disruption in the future as major changes may occur to implement changes that are seen as important now? You can either think of it as an evolution to an "IMAP-on-steroids", or as a major redesign so that TB is split into two parts - one that is a local server to look after all message filing and searching (that may use a database, may access unmodified Outlook files, etc) while the other half does the display (and that could even be implemented simply as a web page in firefox).<br />
<br />
The underlying mechanism for communication between the two halves would have to take into account all the changes suggested now, plus more. I imagine it would have a very fluid idea of what a "folder" is... messages could be in several folders (by date, sender, subject, keywords) and should allow for virtual folders (like the old VMS email system).<br />
<br />
Another thing this may help with is situations that exists when some folders are shared, e.g. if several people may respond to a support (or sales, etc) email, depending on who is available first; messages could be handled by the server part in such a way as to allow automatic re-filing in different folders depending on the extent to which they are processed, including showing if someone else has 'checked out" the message to respond to it.<br />
<br />
Advantages: users could choose a small/simple server or a complex one, irrespective of the front end (and so save RAM, or gain speed, or features). Developers could benefit from a pair of smaller projects, not having to worry about complications internal to the other section; and making the change could nudge certain long-standing problems to be thought out to make a neatly organized plan, even if the implementation of them in each end still needs work.<br />
I think (maybe I'm wrong) that this is an easy transition plan for what amounts to significant re-thinks in message storage, and I think it isn't far from some things already in motion, but I don't think that direction is enough of a priority at the moment.<br />
<br />
== Feature request: time stamp on address book fields ==<br />
<br />
People move frequently. I often use my address book to find mailing addresses, but can't tell if I have the most recent mailing address. If I could see when I last modified the address field, then I could infer whether or not it was the current address. Any ideas how this could be implemented in a non-cluttery way?<br />
<br />
Thanks!<br />
<br />
== Feature request: Adjustable Folder Pane Views ==<br />
It would be nice to provide a possibility to adjust the order of folder views in the folder pane. Or, even better, the possibility to disable certain views in the chain.<br />
Say, I most often switch between "Favorite Folders" and "All Folders" and like to disable others.<br />
<br />
Thanks!<br />
<br />
== Feature request: Thunderbird.next should be a Mail folders sidebar and folder & message tabs in Firefox ==<br />
<br />
I filed {{bug|610536}}, details in the bug. -- [[User:Skierpage|Skierpage]] 16:34, 8 November 2010 (PST)<br />
<br />
== Handling of Attachments ==<br />
<br />
I used Eudora for 10+ years before switching reluctantly to Thunderbird-Eudora. It is fine in most ways, but I want to be find all of my archived emails and attachments in one user-defined place. Then, when I backup or move to another computer, I know I have my files. In Tools > Options > Attachments , there is an option to specify where the attachments should go. Despite the fact that I defined this when I first installed, my attachments NEVER go there, they never have. Instead they go the Windows user AppData temp folder, piled up amongst all the other muck that programs send there. This option clearly does NOT work, at least in Windows 7 Enterprise. Please make this option do what it says it will do!<br />
<br />
== Folder/Subfolder Navigation Needs Help ==<br />
<br />
I also used Eudora for 10+ years before switching to Thunderbird. There is one major problem in Thunderbird: folder navigation. I have many folders and subfolders where I archive messages. This means when I have Inbox open and the message highlighted, I want to put the message somewhere by drag and drop, so I want to go find the target mailbox in the folder navigation pane on the left. But in the folder navigation pane, if I only single-click on any folder, that folder view replaces the main window, that is, I have just lost the message I am trying to move!!! This is really, really annoying. I know that I can use the tiny arrows to open folders and subfolders in an attempt to find the target folder, but it is VERY easy to miss the tiny arrows and click on a folder name by mistake. I really wish the nice folder navigation feature of Eudora, which is also the same as the folder navigation of Windows, were available in Thunderbird!! Or is there any option I can check to change the method of folder navigation in the left pane??? (I know about Eudora-OSE, which DOES work the correct way in terms of folder navigation, but this path is a path of small numbers of users and does not quickly upgrade the underlying Thunderbird, so it is unsustainable.)<br />
<br />
== Feature modification: Enlarge notes area ==<br />
<br />
Could the notes area be a larger viewing area? Or possibly have the viewing area automatically resize itself when you expand the window? I put client notes in the "notes" area in the Address Book. It would be nice to have a larger area to see. Right now I copy and paste them into a text editor. I am running Thunderbird 24.3.0 in Ubuntu 13.10 64-bit. Thanks<br />
<br />
== UI - Multiline Read Panel ==<br />
<br />
Hello all,<br />
<br />
Default layout of inbox panel is in form of a table with all information in one row - subject, sender, date etc. <br />
It would be great to have possibility to customize this panel in the way as it is in Outlook:<br />
<gallery><br />
File:Outl.png|Reading Pane - Outlook<br />
</gallery><br />
<br />
Such layout is really helpful if one uses wide screen - all necessary panels may be displayed next to each other and all necessary information from inbox panel are displayed.<br />
<br />
<br />
<br />
== What tile on "Thunderbird support (SUMO)" for submitting a suggestion ==<br />
<br />
<br><br />
<big>Please be more specific as to where suggestions are to be made at "Thunderbird Support (SUMO)".</big> <br />
<br />
Tips and tricks?<br />
Install, Migrate and Update?<br />
Emails?<br />
News Feeds (RSS), Blogs and Social?<br />
Contacts?<br />
Calendar?<br />
Customize controls, options and add-ons?<br />
Privacy and security settings?<br />
Get community support?<br />
<br />
All of those options appear to offer <big>'''sources'''</big> of information for a person trying to use T-bird or specific features thereof. <br />
<br />
At least, by the names listed, none seems to solicit information <big>'''from'''</big> a user, <big>'''suggesting'''</big> an improvement to a feature or fix for a problem. <br />
<br />
If someone would respond to the above request for a more specific place within SUMO to make a suggestion, it would be very helpful.</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Home&diff=1240581Thunderbird:Home2022-02-14T22:34:42Z<p>BenB: /* Past Councils */ Berna Alp is chair in 2021 Council</p>
<hr />
<div><br />
__NOTOC__<br />
'''Welcome to the [https://www.thunderbird.net/ Thunderbird Project]'s community page''', with links to commonly requested information.<br />
<br />
<div style="border: thin dotted #aaa; padding:5px;"><br />
'''To get help or ask question please visit [https://support.mozilla.org/products/thunderbird Thunderbird Support (SUMO)]. <br>To learn more, to discuss, to get involved, to help promote Thunderbird, to say "Thanks" see [https://thunderbird.net/get-involved/ Get Involved].<br>To make a product suggestion or report a bug please use [https://bugzilla.mozilla.org/enter_bug.cgi?product=Thunderbird bugzilla].'''</div><br />
<!-- <small>Please do not edit this page unless you are on the Thunderbird team.</small> --><br />
<br />
= Status =<br />
'''Thunderbird is alive and well in 2022! [[#Contributing|Please help us keep it that way!]]'''<br />
<br />
The Thunderbird product is developed and managed by the [https://www.thunderbird.net/en-US/about/ '''Thunderbird Project'''], which is collectively the community (both paid staff and volunteers) and the Thunderbird Council:<br />
* The community has continuously [[#Latest release|shipped releases]] with bug fixes and enhancements for many years. Read more at the [https://blog.mozilla.org/thunderbird/ Thunderbird Blog].<br />
* The community holds [[Thunderbird/StatusMeetings|regular meetings]] to discuss important matters of common interest. Meetings are open to anyone interested in Thunderbird.<br />
* The [[Modules/Thunderbird#Thunderbird_Council|Thunderbird Council]] is the governing body for the Thunderbird Project, and coordinates legal and fiscal matters on behalf of the community, and provides overall product strategy.<br />
* The [https://foundation.mozilla.org Mozilla Foundation] is the project's legal and fiscal home.<br />
<br />
= General information =<br />
* [[Thunderbird:Getting_Help|Get help]]<br />
* [https://blog.mozilla.org/thunderbird/ Thunderbird Blog]<br />
* [[Thunderbird/CommunicationChannels|Thunderbird Communication Channels]] - How and where to get information.<br />
* Learn how to deploy "Thunderbird in an organization" at [[Thunderbird/Enterprise|Thunderbird for enterprises]].<br />
<br />
= Contributing =<br />
How '''YOU''' can help and get involved ... <u>'''Thunderbird is self-supported by its user community. We need and welcome you. Please give back to the community.'''</u> <br />
<br />
* [https://donate.mozilla.org/thunderbird/about/ Donate]<br />
* Answer user questions in [https://support.mozilla.org/questions/thunderbird Thunderbird support forum]. (support.mozilla.org aka SUMO is where users like you are supported by users like you.)<br />
* If you answer user questions, join [[Thunderbird/tb-support-crew|support crew]].<br />
* Improve [https://support.mozilla.org/products/thunderbird/ the Knowledge Base (aka KB)] documentation, which users refer to for assistance.<br />
* Help with [[Thunderbird:Testing|quality assurance and testing]].<br />
* Help other translators to [https://developer.mozilla.org/en/Thunderbird_Localization localize Thunderbird in your language].<br />
* [[Thunderbird/Contributing patches|Contribute patches and fixes]].<br />
* [[Thunderbird/Add-ons Guide 57|Add-ons Guide for Thunderbird 57-60]] and [[Thunderbird/Add-ons Guide 63|Add-ons Guide for Thunderbird 63 and beyond]].<br />
* [[Thunderbird/Core_Team|Core Team]] - List of people typically actively involved on a weekly basis, and providing major input into Thunderbird.<br />
'''To get more information or talk to a human, or just to introduce yourself, see [[Thunderbird/CommunicationChannels|Thunderbird Communication Channels]], especially the IRC channel.'''<br />
<u>'''Again, we need users like '''you''' to help in one of the above areas. Please inquire today.'''</u><br />
<br />
= Releases =<br />
[https://www.thunderbird.net/thunderbird/releases/ Thunderbird Project version numbers for '''releases'''] match to Mozilla Firefox <u>ESR numbers</u>. Thunderbird also provides consecutive <u>betas</u> between the ESR numbers, for example 92-102, which match to Firefox (non-ESR) release numbers. Future Thunderbird (ESR) releases upcoming are 103, 125, etc.<br />
== Latest release ==<br />
* Get the current '''release''' of Thunderbird from '''[http://www.thunderbird.net/ thunderbird.net]'''.<br />
* Get the '''beta''' from [https://thunderbird.net/#channel the future of Thunderbird].<br />
== Upcoming releases == <br />
* Version 91 was made available in August 2021. <br />
* Thunderbird does not release on specific scheduled dates, because we ship when '''code is ready and tested'''. But we roughly <u>track</u> the '''ESR''' release schedule of Firefox. See the ESR column of [[RapidRelease/Calendar]]. <br />
** Thunderbird ESR Releases typically happen the same week of the published Firefox dates. But it is sometimes later, because we ship when '''code is ready and tested'''. If you do not see the "newest" version listed at the [https://www.thunderbird.net/ Thunderbird home page], do not worry, the new version is just not yet ready. <br />
** New features and fixes happen as volunteers have time to work on them and fix them - fixes and features generally do not have a schedule which can be communicated to users. If you want new features sooner, then please help us [https://www.thunderbird.net/get-involved/ test and code], or use the beta mentioned above.<br />
** [[Thunderbird/Release_Driving|Release Driving]] - How releases move towards completion<br />
<br />
== Past releases ==<br />
* [https://www.thunderbird.net/thunderbird/releases/ View past release notes]<br />
* [https://releases.mozilla.org/pub/thunderbird/releases/ Download past releases]<br />
<br />
= Governance =<br />
<br />
The Thunderbird council is an elected body of 7 members. See [https://www.thunderbird.net/en-US/about/ about the Council and Community] for more information. See [[Thunderbird/Council Election|more information about the council elections]].<br />
<br />
== Past Councils ==<br />
<br />
* 2021:<br />
** Election results: [[Modules/Thunderbird#Thunderbird_Council|Council module]] Andrei Hajdukewycz, Ben Bucksch, Berna Alp (chair), Dirk Steinmetz, Magnus Melin, Patrick Cloke, Philipp Kewisch<br />
** [[Thunderbird/Council_Elections_2021|2021 Electoral Roll]]<br />
* 2020:<br />
** Election results Berna Alp, Patrick Cloke (Secretary), Philipp Kewisch (Chair), Christopher Leidigh, Magnus Melin, Ryan Sipes (Treasurer), Dirk Steinmetz<br />
** [[Thunderbird/Council_Elections_2020|2020 Electoral Roll]]<br />
* 2019:<br />
** Election results: Berna Alp, Patrick Cloke, Philipp Kewisch (Chair), Jörg Knobloch, Magnus Melin, Wayne Mery (Secretary), Ryan Sipes (Treasurer)<br />
** [[Thunderbird/Council_Elections_2019|2019 Electoral Roll]]<br />
* 2018: <br />
** Election results: Patrick Cloke, Philipp Kewisch (Chair), Jörg Knobloch, Philippe Lieser, Magnus Melin, Wayne Mery, Ryan Sipes (Treasurer)<br />
** [[Thunderbird/Council_Elections_2018|2018 Electoral Roll]]<br />
* 2017:<br />
** Election results: Ben Bucksch, Patrick Cloke, R Kent James (Chair) Philipp Kewisch, Jörg Knobloch, Magnus Melin, Wayne Mery<br />
** [[Thunderbird/Council_Elections_2017|2017 Electoral Roll]] - Electoral Roll.<br />
* 2014:<br />
** The initial Thunderbird Council was elected at the first Thunderbird Summit held in Toronto, Canada in the fall of 2014: Mike Conley, Joshua Cranmer, R Kent James (Chair), Philipp Kewisch, Magnus Melin, Wayne Mery, Florian Quèze.<br />
<br />
= Related and Older links =<br />
These links are outdated or from past management teams, and do not reflect current plans and priorities<br />
* [https://developer.mozilla.org/en/Thunderbird/Thunderbird_Automated_Testing Automated Testing] - Automated Testing of Thunderbird<br />
* [[Thunderbird/Development|Development]] - General development area<br />
* [[Thunderbird:Feature_Discussions|Discussion for new features]] - A place to discuss and consolidate potential new features<br />
* [[Thunderbird:Extensions|Extensions]] - Information for developers looking to develop extensions for Thunderbird<br />
* [[Thunderbird:Feature Work|Feature Work]] - Ongoing work that is expected to land in the Thunderbird core<br />
* [[Thunderbird:Level of support for add-on|Level of support for add-on]] - Level of support for add-on<br />
* [[Thunderbird/New_Release_and_Governance_Model|New Release and Governance Model]] - Issued November 2012<br />
* [[Thunderbird/Infrastructure]] - Thunderbird Build & Release Infrastructure<br />
* [[Thunderbird/Thunderbird38|Thunderbird 38]] - Thunderbird 38<br />
* [[Thunderbird:Help_Documentation:Using_the_Address_Book|Using the Address Book]] - Documentation<br />
* [[Thunderbird:UX|UX]] - User Experience<br />
<br />
== Others ==<br />
<br />
* [[Thunderbird:History|Archived]] - Obsolete Thunderbird wiki pages<br />
* [[Thunderbird:Open_Badges|Open Badges]] - How Thunderbird might use Open Badges<br />
* [[Thunderbird:Related_Projects|Other projects]] - Projects related to Thunderbird<br />
* [[Thunderbird:Participation|Participation]] - Ongoing work around participation & community<br />
* [[Thunderbird:Marketing|Thunderbird Marketing]] - Help spread the word on Thunderbird<br />
* [[Thunderbird/Roles|Thunderbird Roles]] - Thunderbird Roles (Under Development)<br />
* [[Thunderbird:Summit_2014|Toronto Thunderbird Summit October 15-18, 2014]] - Thunderbird 2014 Contributors Summit<br />
<br />
[[Category:Thunderbird|*]]</div>BenBhttps://wiki.mozilla.org/index.php?title=Modules/Thunderbird&diff=1239530Modules/Thunderbird2021-12-14T10:00:09Z<p>BenB: Update to current Council members</p>
<hr />
<div><noinclude><br />
'''Only module owners may edit this page.''' <br />
<br />
They may:<br />
<br />
* update any information about their module except the name of the owner<br />
* add or remove sub-modules<br />
* change the owner of a sub-module <br />
* add emeritus owners or peers<br />
<br />
Other changes, including changes of module owner or addition/removal of modules, must be agreed with the Module Ownership Module group, probably via a discussion in [https://www.mozilla.org/about/forums/#governance mozilla.governance].<br />
</noinclude><br />
{{Module<br />
|name=Thunderbird<br />
|description=Standalone Mail Application.<br />
|owner=[mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin)<br />
|ownersemeritus=Mark Banner (:standard8), David Bienvenu (:bienvenu), Scott MacGregor (:mscott)<br />
|peers=[mailto:geoff@darktrojan.net Geoff Lankow] (:darktrojan), [mailto:acelists@atlas.sk Aceman] (:aceman), [mailto:richard.marti@gmail.com Richard Marti] (:paenglab)<br />
|peersemeritus=Blake Winton, Mike Conley, Kent James, Jörg Knobloch (:jorgk)<br />
|source_dirs=mail/,mail/themes/,other-licenses/branding/thunderbird/<br />
|url=https://developer.thunderbird.net/<br />
|components=Thunderbird<br />
}}<br />
<br />
{{Module<br />
|name=Thunderbird Council<br />
|description=The Thunderbird Council is the elected governing body for the [https://www.thunderbird.net/en-US/about/ Thunderbird Project]. Peers are the members of the Council. The Thunderbird Council decides legal and fiscal matters on behalf of the community, and provides overall product strategy.<br />
|owner=Chairperson 2020: [mailto:mozilla@kewis.ch Philipp Kewisch] (:Fallen)<br />
|peers=Andrei Hajdukewycz (:sancus), [https://www.beonex.com/ Ben Bucksch] (:benb), [mailto:ba@thunderbird.net Berna Alp] (:ba), [mailto:rsjtdrjgfuzkfg@thunderbird.net Dirk Steinmetz] (:rsjtdrjgfuzkfg), [mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin), [mailto:clokep@patrick.cloke.us Patrick Cloke] (:clokep, Secretary), [mailto:mozilla@kewis.ch Philipp Kewisch] (:Fallen, Chairperson)<br />
|url=[mailto:council@thunderbird.net The Thunderbird Council], [[Thunderbird:Home#Governance|Past Councils]]<br />
}}<br />
<br />
{{Module<br />
|name=Build Config<br />
|description=Build Automation<br />
|owner=[mailto:rob@thunderbird.net Rob Lemley] (:rjl)<br />
|source_dirs=mail/config/, taskcluster/<br />
|peers=[mailto:mozilla@kewis.ch Philipp Kewisch] (:Fallen)<br />
|peersemeritus=Mark Banner (:standard8), Siddharth Agarwal (:sid0), Justin Wood (:callek), Joshua Cranmer (:jcranmer), Tom Prince (:tomprince)<br />
|components=Thunderbird::Build Config<br />
}}<br />
<br />
{{Module<br />
|name=Add-on Support<br />
|description=APIs to enable extensions, as well as their installation<br />
|owner=[mailto:geoff@darktrojan.net Geoff Lankow] (:darktrojan)<br />
|peers=[mailto:john@thunderbird.net John Bieling] (:TbSync), [mailto:mozilla@kewis.ch Philipp Kewisch] (:Fallen)<br />
|components=Thunderbird::Add-Ons Extensions API, Thunderbird::Add-Ons General<br />
}}<br />
<br />
{{Module<br />
|name=Instant Messaging<br />
|description=The chat and instant messaging component of Thunderbird<br />
|owner=[mailto:clokep@patrick.cloke.us Patrick Cloke] (:clokep)<br />
|ownersemeritus=[mailto:florian@mozilla.com Florian Quèze]<br />
|peers=[mailto:martin@humanoids.be Martin Giger] (:freaktechnik)<br />
|peersemeritus=[mailto:aleth@instantbird.org aleth] (:aleth), [mailto:benediktp@ymail.com Benedikt Pfeifer] (:Mic)<br />
|components=Thunderbird::Instant Messaging<br />
|source_dirs=mail/components/im/, chat/<br />
}}<br />
<br />
{{Module<br />
|name=Theme<br />
|description=<br />
|owner=[mailto:richard.marti@gmail.com Richard Marti] (:paenglab)<br />
|peersemeritus=Josiah Bruner (:JosiahOne), Blake Winton (:bwinton), Mike Conley (:mconley)<br />
|components=Thunderbird::Theme<br />
|source_dirs=mail/themes/<br />
}}<br />
<br />
{{Module<br />
|name=Message Security<br />
|description=OpenPGP and S/MIME message security.<br />
|owner=[mailto:kaie@thunderbird.net Kai Engert] (:kaie)<br />
|source_dirs=mail/extensions/openpgp, mail/extensions/smime<br />
|peers=[mailto:patrick@enigmail.net Patrick Brunschwig], [mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin)<br />
}}<br />
<br />
{{Module<br />
|name=UX (User Experience)<br />
|description=<br />
|owner=[mailto:alessandro@thunderbird.net Alessandro Castellani] (:aleca)<br />
|peers=[mailto:richard.marti@gmail.com Richard Marti] (:paenglab), [mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin)<br />
|peersemeritus=Blake Winton (:bwinton)<br />
|components=Thunderbird::General<br />
}}<br />
<br />
{{Module<br />
|name=Website<br />
|description=The Thunderbird related pages on thunderbird.net and elsewhere.<br />
|owner=[mailto:sancus@off.net Andrei Hajdukewycz] (:sancus)<br />
|peers=[mailto:mkmelin+mozilla@iki.fi Magnus Melin] (:mkmelin), [mailto:vseerror@lehigh.edu Wayne Mery] (:wsmwk), [mailto:ryan@thunderbird.net Ryan Sipes] (:ryanleesipes), [mailto:alessandro@thunderbird.net Alessandro Castellani] (:aleca)<br />
|components=https://github.com/thundernest/thunderbird-website<br />
|source_dirs=https://github.com/thundernest/thunderbird-website<br />
}}<br />
<br />
===See also===<br />
* [[Modules/Calendar|Calendar]]<br />
* [[Modules/MailNews_Core|MailNews Core]]</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration&diff=1235989Thunderbird:Autoconfiguration2021-06-08T10:27:25Z<p>BenB: Fix MDN link, which MDN broke</p>
<hr />
<div><small>[[Thunderbird:Feature_Discussions|<< Back to Thunderbird:Feature_Discussions]]</small><br />
<br />
<br />
__TOC__<br />
<br />
Author: Ben Bucksch<br />
<br />
Subpages<br />
* [[Thunderbird:Autoconfiguration:UI|UI screen proposals]]<br />
* [[Thunderbird:Autoconfiguration:ConfigFileFormat|Config file format]]<br />
* [[MailServerList|MailServerList]]<br />
* [[Thunderbird:Autoconfiguration:DNSBasedLookup|DNS TXT-based ISP config lookup]]<br />
* [[Thunderbird:Autoconfiguration:Security|Security considerations]], [[Thunderbird:Autoconfiguration:Security_review_General|General Security review]], [[Thunderbird:Autoconfiguration:Security_review_FetchConfigFromISP|ISP Fetch Security review]]<br />
* [[Thunderbird:Autoconfiguration:MozillaWebservicePublish|ISP configuration database]]<br />
* [[Thunderbird:Autoconfiguration:NextSteps|Next Steps]]<br />
<br />
Other resources<br />
* [https://support.mozilla.org/kb/automatic-account-configuration End-user documentation]<br />
* [https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration Description for administrators and technical users]<br />
<br />
= See also =<br />
<br />
This is the project page. The most up-to-date and readable documentation is the [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Description for administrators and technical users] at MDC.<br />
<br />
= Current situation =<br />
Most people are using webmail these days, mainly because it's so easy. You only need to click on a link on the provider's homepage and know your email address and password, and there's your inbox already. ISPs, although all of them provide POP/IMAP, are leading users to webmail because of that ease of use (and free mail providers do so for the advertizing revenue).<br />
<br />
The Thunderbird account setup wizard requires knowledge of a lot of technical settings, most of which users have no clue what they mean nor where to get this information (even if it's provided readily by the ISP). For them, this is a real stop gap - at least sufficiently problematic to not bother.<br />
<br />
= Goal =<br />
<br />
Make my non-tech friends use Thunderbird, by making it dead-simple to set up.<br />
I.e. make it easy for as many users as possible to get a working Thunderbird configuration, and as secure as possible.<br />
<br />
Ideally, setting up Thunderbird should be as easy as download/install and entering real name, email address and password. The Account Setup Wizard consists of only one screen.<br />
<br />
* Major Goals<br />
** Require only the minimal upfront information from most people<br />
*** Name, Email address, Password<br />
** Provide and offer preset configurations for at least all large ISPs<br />
** Use SSL and/or password encryption where possible, to protect passwords and mail contents during retrieval.<br />
* Important Goals<br />
** Set of configurations can be extended and updated<br />
** Reduce the number of account wizard steps as much as possible<br />
** Reduce overall distractions for normal case (distractions = text and clutter, things not understandable or needed by most users)<br />
** Increase the prominence of the Email account choice<br />
** Don't add complexity/confusion with this<br />
* Possible Goals<br />
** Shared system for community to submit, edit, and publish configurations<br />
** Allow people to publish working configurations peer to peer via email<br />
<br />
Assumptions<br />
* User Segmenting<br />
** Large ISPs (google, msn, yahoo, etc.)<br />
*** Set of users is very large <br />
*** Set of ISPs is small<br />
** Smaller ISPs<br />
*** Set of users is moderate-sized<br />
*** Set of ISPs is large<br />
** Corporate employee accounts<br />
*** Set of users per server is small, accumulated very large<br />
*** Set of providers and server implementations is very large and diverse<br />
** Personal Servers<br />
*** Set of users per server is tiny (1-20), accumulated very small<br />
*** Set of providers and server implementations is very large and diverse<br />
<br />
= Implementation =<br />
<pre><br />
+--------------------------------------------------+<br />
| *Account Setup* |<br />
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|<br />
| (o) E-Mail account |<br />
| |<br />
| Full name: [ ] |<br />
| E-Mail address: [ ] |<br />
| Password: [ ] |<br />
| |<br />
| [ ] Manual configuration | <br />
| |<br />
| ( ) RSS News Feeds and Blogs |<br />
| ( ) Newsgroup account |<br />
| ( ) Calendar |<br />
| |<br />
| [ Cancel ] [ Next/Done ] |<br />
+--------------------------------------------------+<br />
</pre><br />
<br />
(The UI mockup above is only an example for better understanding, see [[Thunderbird:Autoconfiguration:UI|UI page]] for more info.)<br />
<br />
In the Account Setup wizard, if the "Email account" radio button is selected (which is the default), 3 text fields are visible and enabled: real name, email address and password.<br />
<br />
Email address is properly syntax-checked.<br />
<br />
The domain if the email address is used to determine the configuration (POP/IMAP and SMTP server names, SSL yes/no, authentication methods etc.), via several mechanisms:<br />
<br />
(For most current information, please see https://developer.mozilla.org/en/Thunderbird/Autoconfiguration .)<br />
<br />
# Config files on harddisk, in <i>installdir</i>/isp/<i>emailaddressdomain</i>.xml , e.g. C:/Program Files/Mozilla/Thunderbird/isp/example.com.xml .<br />
#* Same file format as below.<br />
#* This is only for intranet deployments, we won't be shipping any configs by default anymore, in favor of the following alternatives.<br />
# Try to get the configuration from the email provider<br />
## Try to contact http://autoconfig.<i>emailaddressdomain</i>/mail/config-v1.1.xml?emailaddress=<i>emailaddress</i> , e.g. http://autoconfig.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com, as well as fallback http://example.com/.well-known/autoconfig/mail/config-v1.1.xml, and see whether that host/URL exists. The returned file must have the [[Thunderbird:Autoconfiguration:ConfigFileFormat|ConfigFileFormat]] as below.<br />
## and/or (not yet implemented), define a DNS TXT record on domain example.net (for my.account@example.net) which contains an URL like e.g. https://www.example.net/mozilla.xml , which also returns this file format. A similar, but slightly different proposal is described in detail on [[Thunderbird:Autoconfiguration:DNSBasedLookup|DNSBasedLookup]].<br />
## and/or (not yet implemented) use DNS SRV records _imap._tcp.example.com etc. (Problem: Doesn't provide username form etc..)<br />
# Try to find the config at the Mozilla server (if the email provider does not provide the configuration)<br />
#* Fetch https://live.mozillamessaging.com/autoconfig/<i>emailaddressdomain</i> , e.g. https://live.mozillamessaging.com/autoconfig/example.com . (Email address of user is not passed, otherwise Mozilla would have a list of email addresses of all users.)<br />
#* That file contains the mail configuration. Content is described on [[Thunderbird:Autoconfiguration:ConfigFileFormat|ConfigFileFormat]].<br />
#* This service will have the configuration for all the major ISPs and email providers, so there's a 90+% hit rate<br />
#* It will not work for corporate email accounts.<br />
#* If a provider disagrees with a setting there, it can override the configuration by simply providing the config server in step 2.<br />
# If we couldn't find any configuration file, we try to guess the configuration using some heuristics. We try imap.<i>domain</i>, pop.<i>domain</i>, pop3.<i>domain</i>, smtp.<i>domain</i> and mail.<i>domain</i>, and for each, try the common 2-3 ports. We check whether SSL is available, which authentication algorithms are announces by the server in the CAPABILITIES etc..<br />
# If all fails, we ask the user to enter the configuration manually.<br />
<br />
If we could find a configuration, we're done already, with that one screen.<br />
<br />
The password dialog does not need to come up either, as the password has already been entered by the user and the wizard filled it in using the password manager.<br />
<br />
We should also provide an option to ignore the autoconfig and go into manual config, e.g. using a link button "Create in advanced editor" (this works exactly like the current "Email account" option) in addition to the new "Email account" option which does the automatic config.<br />
<br />
= Related Information =<br />
<br />
* The newsgroup discussion is at news://news.mozilla.org:119/mozilla.dev.apps.thunderbird (Subject: '''Proposal: Auto-configuration''', Date: 2008-03-04)<br />
* [ ] [ ] [https://hg.mozilla.org/users/dascher_mozilla.com/autoconfig/ hg branch]<br />
* [http://groups.google.com/group/ispdb Google discussion group about ISPDB]<br />
* The old/current RDF file format is documented at [http://developer.mozilla.org/en/docs/Thunderbird_ISP_hooks Thunderbird ISP hooks]<br />
* mscott made a [[Thunderbird:Easy_Account_Setup|similar proposal]] one year ago<br />
* An [http://tools.ietf.org/html/draft-daboo-srv-email-02 Internet Draft] about SRV records for locating email services.<br />
<br />
[[Category:Thunderbird|*]]</div>BenBhttps://wiki.mozilla.org/index.php?title=Jetpack/Collections&diff=1233428Jetpack/Collections2021-01-29T12:41:59Z<p>BenB: Moved to github</p>
<hr />
<div>Author: Ben Bucksch<br />
<br />
= JavaScript Collections =<br />
<br />
UPDATE: Moved to https://github.com/benbucksch/jscollection/<br />
<br />
This describes a future module that will have a coherent set of collection/list classes<br />
<br />
This is mostly about 3 aspects:<br />
* A common API for various collection types (array, set, map, OrderedMap etc.), similar to java.util.Collection.<br />
* observers to notify about changes<br />
* operators for whole lists, like concat, merge, substract, intersect etc.<br />
<br />
The real value comes from being a coherent API and base functionality that can be used in other APIs, and these other APIs are fitting together naturally. If each API uses a slightly different API to add/remove items, not only does the programmer have to learn each API, but he also has to do the plumbing between the components all manually. This gets particularly tedious as there need to be dynamic updates from one component to another, e.g. data to UI or pref dialog to main UI. The advantage here is that this is a powerful, yet lean system to plug modules together with custom operators in between. Basically LEGO Technic.<br />
<br />
= Functionality =<br />
<br />
* Base API implemented by all collections<br />
** similar to java.util.Collection probably<br />
** with observers to allow you to subscribe to changes and be notified when items are added or remoted<br />
** Ability to specify identity and sorting for items, e.g. "if |id| property matches, it's the same item" and "sort on |name| property" or "if a.name > b.name, then a > b"<br />
* Operators on the collections<br />
** Operate on whole lists, e.g. allItems = add(serverItems, localItems);<br />
** Update result dynamically using observers<br />
** add, merge<br />
** subtract<br />
** in common, not in common<br />
** sort<br />
* Some basic collection implementations<br />
** Array - ordered list of items, integer-indexed - based on JS Array<br />
** Map - key/value pair - based on JS Object properties<br />
** OrderedMap - allows fast lookup<br />
** Set<br />
** OrderedMap<br />
** Others can live in third-party modules, but if they adhere to the common APi, they would fit in nicely<br />
* UI<br />
** (Not part of this module, but a use of it)<br />
** Listbox, tree node childred etc. all could accept such lists<br />
** E.g. listbox.showList(allItems)<br />
** Dynamically adapting UI without extra work: Thanks to observers, the UI updates automatically based on changes of the underlying list.<br />
** The API of the UI then wouldn't need "add/remoteItem" functions itself.<br />
* Other classes<br />
** Pretty much anything that takes a list in Jetpack could be using this API, at least optionally.<br />
<br />
= Example =<br />
<br />
Show only those server items which are not in local items, i.e. only offer new stuff<br />
<br />
var serverItems = new JArray();<br />
serverItems.add(itemA);<br />
serverItems.add(itemB);<br />
var localItems = listAllMyItems(path);<br />
var offerItems = subtract(serverItems, localItems);<br />
var listbox = E(&quot;itemsList&quot;);<br />
listbox.showList(offerItems);<br />
<br />
That's all already. Now, when items are added to serverItems, they automatically appear in the list UI (without any further app code), *unless* they are in localItems.<br />
<br />
That's because the subtract operator automatically subscribed to changes in serverItems. If you then later do serverItems.add(itemC), the subtract operator would check whether the same items is in localItem, and only if it's not, it would add it to offerItems. listbox.showList() in turn automatically subscribed to changes in offerItems, gets notified about the new item there, and shows it. All of that would happen just with the above code lines, there is no additional code needed to follow updates.<br />
<br />
Of course, if you wanted to show both serverItems and localItems in the UI, you would do |add()| instead of |substract()|.<br />
<br />
This means that you don't need additional wiring to make the UI update after the user (or server) did add/remove item actions, you only need to update the underlying lists.<br />
<br />
= API =<br />
<br />
The classes are standing alone, they do not change JS Array or Object types.<br />
<br />
(extract, full docs will be in module)<br />
<br />
== Collection ==<br />
<br />
Base class for all lists.<br />
<br />
* Adds one item to the list<br />
* @param item {Object} any JS object<br />
add : function(item)<br />
<br />
* Removes one item from the list<br />
* @param item {Object} any JS object<br />
remove : function(item)<br />
<br />
* Add all items in |coll| to this list.<br />
* This is just a convenience function.<br />
* This adds items statically and does not observe the |coll| changes.<br />
* Consider using addColl() instead.<br />
* Note: This is intentionally not overloading |add|.<br />
* @param coll {Collection or JS Array}<br />
addAll : function(coll)<br />
<br />
* Removes all items in |coll| from this list<br />
* @param coll {Collection or JS Array}<br />
removeAll : function(coll)<br />
<br />
* Removes all items from the list.<br />
clear : function()<br />
<br />
* The number of items in this list<br />
* @returns {Integer} (always >= 0)<br />
get length()<br />
<br />
* Whether there are items in this list<br />
* @returns {Boolean}<br />
get isEmpty()<br />
<br />
* Checks whether this item is in the list.<br />
* @returns {Boolean}<br />
contains : function(item)<br />
<br />
* Returns all items contained in this list,<br />
* as a new JS array (so calling this can be expensive).<br />
*<br />
* If the list is ordered, the result of this function<br />
* is ordered in the same way.<br />
*<br />
* While the returned array is a copy, the items<br />
* are not, so changes to the array do not affect<br />
* the list, but changes to its items do change the<br />
* items in the list.<br />
*<br />
* @returns {Array} new JS array with all items<br />
contents : function()<br />
<br />
* Provides an iterator, i.e. allows to write:<br />
* var coll = new Set();<br />
* for each (let item in coll)<br />
* debug(item);<br />
__iterator__ : function()<br />
<br />
* Pass an object that will be called when<br />
* items are added or removed from this list.<br />
* If you call this twice for the same observer, the second is a no-op.<br />
* @param observer {CollectionObserver}<br />
registerObserver : function(observer)<br />
<br />
* undo |registerObserver|<br />
* @param observer {CollectionObserver}<br />
unregisterObserver : function(observer)<br />
<br />
== KeyValueCollection ==<br />
<br />
A collection where entries have a key or label or index.<br />
<br />
Examples of subclasses: Array (key = index), Map<br />
<br />
* Sets the value for |key|<br />
* @param key<br />
set : function(key, item)<br />
<br />
* Gets the value for |key|<br />
* If the key doesn't exist, returns |undefined|.<br />
* @param key<br />
get : function(key)<br />
<br />
* Remove the key and its corresponding value item.<br />
* undo set(key, item)<br />
removeKey : function(key)<br />
<br />
* @returns {Boolean}<br />
containsKey : function(key)<br />
<br />
* Searches the whole list for this |value|.<br />
* and if found, returns the (first) key for it.<br />
* If not found, returns undefined.<br />
* @returns key<br />
getKeyForValue : function(value)<br />
<br />
== CollectionObserver ==<br />
<br />
* Called after an item has been added to the list.<br />
* @param item {Object} the removed item<br />
* @param coll {Collection} the observed list. convenience only.<br />
added : function(item, list)<br />
<br />
* Called after an item has been removed from the list<br />
*<br />
* TODO should clear() call removed() for each item?<br />
* Currently: yes.<br />
* Alternative: separate cleared()<br />
*<br />
* @param item {Object} the removed item<br />
* @param coll {Collection} the observed list. convenience only.<br />
removed : function(item, coll)<br />
<br />
== Operators ==<br />
<br />
add, subtract, and, xor (compare [http://en.wikipedia.org/wiki/Set_theory Set theory]) and sort<br />
<br />
All operators observe the original collections they are constructed from, and adapt the result based on changes, and notify any observers that are registered on the operator result collection.<br />
<br />
* operator +<br />
* Returns a collection that contains all values from coll1 and coll2.<br />
* If the same item is in both coll1 and coll2, it will be added only once.<br />
*<br />
* [http://en.wikipedia.org/wiki/Union_(set_theory) Union]<br />
*<br />
* @param coll1 {Collection}<br />
* @param coll2 {Collection}<br />
* @returns {Collection}<br />
* Does not preserve order.<br />
function mergeColl(coll1, coll2)<br />
<br />
* operator +<br />
* Returns a collection that contains all values from coll1 and coll2.<br />
* If the same item is in both coll1 and coll2, it will be added twice.<br />
* The result is simply coll2 appended to coll1.<br />
*<br />
* @param coll1 {Collection}<br />
* @param coll2 {Collection}<br />
* @returns {Collection}<br />
* Preserves order<br />
function concatColl(coll1, coll2)<br />
<br />
* operator -<br />
* Returns a collection that contains all values from collBase,<br />
* apart from those in collSubtract.<br />
*<br />
* [http://en.wikipedia.org/wiki/Set_difference Set difference]<br />
*<br />
* @param collBase {Collection}<br />
* @param collSubtract {Collection}<br />
* @returns {Collection}<br />
* Preserves order of collBase.<br />
function subtractColl(collBase, collSubtract)<br />
<br />
* operator &<br />
* Returns a collection that contains all values that are contained<br />
* in *both* coll1 and coll1.<br />
*<br />
* [http://en.wikipedia.org/wiki/Intersection_(set_theory) Intersection]<br />
*<br />
* @param coll1 {Collection}<br />
* @param coll2 {Collection}<br />
* @returns {Collection}<br />
* Does not preserve order.<br />
function inCommonColl(coll1, coll2)<br />
<br />
* operator xor<br />
* Returns a collection that contains all values that are contained<br />
* only in coll1 or coll2, but not in both.<br />
*<br />
* [http://en.wikipedia.org/wiki/Symmetric_difference Symmetric difference]<br />
*<br />
* @param coll1 {Collection}<br />
* @param coll2 {Collection}<br />
* @returns {Collection}<br />
* Does not preserve order.<br />
function notInCommonColl(coll1, coll2)<br />
<br />
* Returns a new collection that is sorted based on the |sortFunc|.<br />
*<br />
* @param coll {Collection}<br />
* @param sortFunc(a {Item}, b {Item})<br />
* returns {Boolean} a > b<br />
* @returns {Collection}<br />
function sortColl(coll, sortFunc)<br />
<br />
= Implementation =<br />
<br />
DONE<br />
* Ben Bucksch provided API, base implementation, Array, Set, and operators<br />
<br />
TODO<br />
* Ben will implement Map and sortColl()<br />
* M.-A. Darche will provide OrderedMap and possibly OrderedSet<br />
* Others are welcome to make UI elements support these collections.<br />
* The code will be documented using the [http://code.google.com/intl/en/closure/compiler/docs/js-for-compiler.html JSDoc conventions].<br />
<br />
Code / download<br />
* git clone https://github.com/benbucksch/jscollection<br />
* [https://bugzilla.mozilla.org/show_bug.cgi?id=722597 Bug 722597]<br />
<br />
= Feedback needed =<br />
<br />
== Comparison of items ==<br />
How to specify identity and sorting for items, e.g. "if |id| property matches, it's the same item" and "sort on |name| property" or "if a.name > b.name, then a > b"<br />
<br />
Options:<br />
* base class for items -- convenient, but doesn't allow to collect objects not supporting this API, also doesn't allow to specify different sorting based on situation<br />
* Operators and Set and Ordered* collections take functions that can compare the objects -- cumbersome, because it needs to be specified for every use<br />
<br />
* specify id and sortBy properties or -- more convenient<br />
* specify isSameObject() and isGreaterThan() functions - more flexible<br />
<br />
== Naming ==<br />
The [https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Set Set] object is available in future versions of Firefox and thus this name should not be used.<br />
<br />
== Compatibiltiy ==<br />
* What should be the [http://robertnyman.com/javascript/ JavaScript version and features] this module relies on? Relying on JavaScript 1.6 would make it possible to use the JavaScript Collections with Google Chrome V8 JavaScript engine as well and thus the JavaScript Collections module would be useful for more people for more context, and a developer using the JavaScript Collections for Jetpack could use it as-is on many other web projects. That would ease many developers' life.<br />
<br />
== weak references ==<br />
* Leveraging [https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/WeakMap WeakMap] (available since Firefox 6 and should be available in Google Chrome 18) should be considered.</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration:ConfigFileFormat&diff=1232900Thunderbird:Autoconfiguration:ConfigFileFormat2021-01-02T06:38:49Z<p>BenB: /* XML */ Move <enable> back into <emailProvider> where it was</p>
<hr />
<div>Author: [[User:BenB|Ben Bucksch]]. Please do not change this doc without checking with the author.<br />
<br />
This page is the authorative specification of the config file that the Mozilla ISPDB and config services at ISPs return.<br />
<br />
It is XML, with a clearly defined format, to be stable and usable by other mail clients, too. Update Aug 2010: In fact, [http://projects.gnome.org/evolution/ Evolution] and [http://userbase.kde.org/KMail KMail] and [http://www.kontact.org Kontact] now use it, too.<br />
<br />
= Description =<br />
<br />
* [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Description of the different mechanisms to serve the configuration file]<br />
* [https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo How to create your own config file]<br />
<br />
= XML =<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<clientConfig version="1.1"><br />
<emailProvider id="example.com"><br />
<domain>example.com</domain><br />
<domain>example.net</domain><br />
<br />
<displayName>Google Mail</displayName><br />
<displayShortName>GMail</displayShortName><br />
<br />
<!-- type=<br />
"imap": IMAP<br />
"pop3": POP3<br />
--><br />
<incomingServer type="pop3"><br />
<hostname>pop.example.com</hostname><br />
<port>995</port><br />
<!-- "plain": no encryption<br />
"SSL": SSL 3 or TLS 1 on SSL-specific port<br />
"STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS<br />
--><br />
<socketType>SSL</socketType><br />
<username>%EMAILLOCALPART%</username><br />
<!-- Authentication methods:<br />
"password-cleartext",<br />
Send password in the clear<br />
(dangerous, if SSL isn't used either).<br />
AUTH PLAIN, LOGIN or protocol-native login.<br />
"password-encrypted",<br />
A secure encrypted password mechanism.<br />
Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.<br />
"NTLM":<br />
Use NTLM (or NTLMv2 or successors),<br />
the Windows login mechanism.<br />
"GSSAPI":<br />
Use Kerberos / GSSAPI,<br />
a single-signon mechanism used for big sites.<br />
"client-IP-address":<br />
The server recognizes this user based on the IP address.<br />
No authentication needed, the server will require no username nor password.<br />
"TLS-client-cert":<br />
On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)<br />
"OAuth2":<br />
OAuth2. Works only on specific hardcoded servers, please see below. Should be added only as second alternative.<br />
"none":<br />
No authentication<br />
--><br />
<authentication>password-cleartext</authentication><br />
<pop3><br />
<!-- remove the following and leave to client/user? --><br />
<leaveMessagesOnServer>true</leaveMessagesOnServer><br />
<downloadOnBiff>true</downloadOnBiff><br />
<daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer><br />
<!-- only for servers which don't allow checks more often --><br />
<checkInterval minutes="15"/><!-- not yet supported --><br />
</pop3><br />
<password>optional: the user's password</password><br />
</incomingServer><br />
<br />
<outgoingServer type="smtp"><br />
<hostname>smtp.googlemail.com</hostname><br />
<port>587</port><br />
<socketType>STARTTLS</socketType> <!-- see <incomingServer> --><br />
<username>%EMAILLOCALPART%</username> <!-- if smtp-auth --><br />
<!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.<br />
For values, see incoming.<br />
Additional options here:<br />
"SMTP-after-POP":<br />
authenticate to incoming mail server first<br />
before contacting the smtp server.<br />
Compatibility note: Thunderbird 3.0 accepts only "plain",<br />
"secure", "none", and "smtp-after-pop".<br />
It will ignore the whole XML file, if other values are given.<br />
--><br />
<authentication>password-cleartext</authentication><br />
<!-- If the server makes some additional requirements beyond<br />
<authentication>.<br />
"client-IP-address": The server is only reachable or works,<br />
if the user is in a certain IP network, e.g.<br />
the dialed into the ISP's network (DSL, cable, modem) or<br />
connected to a company network.<br />
Note: <authentication>client-IP-address</><br />
means that you may use the server without any auth.<br />
<authentication>password-cleartext</> *and*<br />
<restriction>client-IP-address</> means that you need to<br />
be in the correct IP network *and* (should) authenticate.<br />
Servers which do that are highly discouraged and<br />
should be avoided, see {{bug|556267}}.<br />
Not yet implemented. Spec (element name?) up to change.<br />
--><br />
<restriction>client-IP-address</restriction><br />
<!-- remove the following and leave to client/user? --><br />
<addThisServer>true</addThisServer><br />
<useGlobalPreferredServer>true</useGlobalPreferredServer><br />
<password>optional: the user's password</password><br />
</outgoingServer><br />
<br />
<!-- Add this only when users (who already have an account) have to<br />
do something manually before the account can work with IMAP/POP or SSL.<br />
Note: Per XML, & (ampersand) needs to be escaped to & a m p ;<br />
(without spaces).<br />
Not yet implemented, see bug 586364. --><br />
<enable<br />
visiturl="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"><br />
<instruction>Check 'Enable IMAP and POP' in Google settings page</instruction><br />
<instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction><br />
</enable><br />
<br />
<!-- A page where the ISP describes the configuration.<br />
This is purely informational and currently mainly for<br />
maintenance of the files and not used by the client at all.<br />
Note that we do not necessarily use exactly the config suggested<br />
by the ISP, e.g. when they don't recommend SSL, but it's available,<br />
we will configure SSL.<br />
The text content should contains a description in the native<br />
language of the ISP (customers), and a short English description,<br />
mostly for us.<br />
--><br />
<documentation url="http://www.example.com/help/mail/thunderbird"><br />
<descr lang="en">Configure Thunderbird 2.0 for IMAP</descr><br />
<descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr><br />
</documentation><br />
<br />
</emailProvider><br />
<br />
<!-- Syncronize the user's address book / contacts. Not yet implemented. --><br />
<addressBook type="carddav"><br />
<username>%EMAILADDRESS%</username><br />
<!-- Authentication methods. See also <incomingServer>.<br />
"http-basic":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Basic<br />
"http-digest":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Digest<br />
"OAuth2":<br />
OAuth2. Uses the same token as for email.<br />
--><br />
<authentication>http-basic</authentication><br />
<serverURL>https://contacts.example.com/remote.php/dav<serverURL><br />
</addressBook><br />
<br />
<!-- Syncronize the user's calendar. Not yet implemented. --><br />
<calendar type="caldav"><br />
<username>%EMAILADDRESS%</username><br />
<authentication>http-basic</authentication> <!-- see <addressBook> --><br />
<serverURL>https://calendar.example.com/remote.php/dav<serverURL><br />
</calendar><br />
<br />
<!-- Upload files, allowing the user to share them. Not yet implemented.<br />
This can be used for Thunderbird's FileLink feature,<br />
or to set up a file sync folder on the user's desktop. --><br />
<fileShare type="webdav"><br />
<username>%EMAILADDRESS%</username><br />
<authentication>http-basic</authentication> <!-- see <addressBook> --><br />
<serverURL>https://share.example.com/remote.php/dav<serverURL><br />
</fileShare><br />
<br />
<!-- This allows to access the webmail service of the provider.<br />
The URLs are loaded into a standard webbrowser for the user.<br />
Specifying this is optional. --><br />
<webMail><br />
<!-- Webpage where the user has to log in manually by entering username<br />
and password himself.<br />
HTTPS required. --><br />
<loginPage url="https://mail.example.com/login/" /><br />
<br />
<!-- Same as loginAutomaticDOM, but the website makes checks that<br />
the user comes from the login page. So, open the login page<br />
in the browser, get the page's DOM, fill out name and password<br />
fields for the user, and trigger the login button.<br />
The login button might not be an HTML button, just a div, so<br />
to trigger it, send a click event to it.<br />
HTTPS is required for the URL. --><br />
<loginPageInfo url="https://mail.example.com/login/"><br />
<!-- What to fill into the usernameField.<br />
Format is the same as for <username> within <incomingServer>,<br />
including placeholders. See below for valid placeholders. --><br />
<username>%EMAILADDRESS%</username><br />
<!-- Allows to find the textfield on the page, to fill it out.<br />
The id attribute give the DOM ID,<br />
The name attribute give the DOM name attribute.<br />
One or both of id and name attributes must exist.<br />
Try the ID first (e.g. using getElementById()), if existing.<br />
Otherwise, try finding the element by name.<br />
Don't treat the IDs given in this XML file as trusted,<br />
but before using them, verify the format<br />
(e.g. only characters and digits for IDs).<br />
If you use powerful functions like jQuery, and the XML returns<br />
you code in the username ID, and you feed it unchecked to jQuery,<br />
it may be executed. --><br />
<usernameField id="email_field" name="email" /><br />
<passwordField name="password" /><br />
<!-- The submit button to trigger the server submit<br />
after filling in the fields.<br />
id and name attributes: See <usernameField> --><br />
<loginButton id="submit_button" name="login"/><br />
</loginPageInfo><br />
</webMail><br />
<br />
<!-- see description. Not yet supported, see bug 564043. --><br />
<inputField key="USERNAME" label="Screen name"></inputField><br />
<inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField><br />
<br />
<clientConfigUpdate url="https://www.example.com/config/mozilla.xml" /><br />
<br />
</clientConfig><br />
</pre><br />
<br />
= Multiple servers =<br />
<br />
incomingServer and outgoingServer may appear several times. They are in order of priority, the first entry should generally be used, unless there's a specific factor or policy which prefers a later config.<br />
<br />
For example, there may be configs with STARTTLS and normal SSL. Use the first entry listed. If that fails (server config change), you can try the second config. If IMAP and POP3 servers both exist, then both should be listed; the client or end user can select the protocol which best suits its needs. The config/ISP can, however, express a preference for IMAP or POP3 by what is listed first in the config file.<br />
<br />
= Placeholders =<br />
<br />
The email address (before @ or with domain) that the user entered can be used as placeholder in the config file, so the file is the same for all users (i.e. static).<br />
<br />
Placeholders:<br />
* %EMAILADDRESS% (full email address of the user, usually entered by the user)<br />
* %EMAILLOCALPART% (email address, part before @)<br />
* %EMAILDOMAIN% (email address, part after @)<br />
* %REALNAME% (needed?)<br />
* The key (surrounded by %) in <inputfield key=""> (see below)<br />
<br />
These placeholders can be used as value or value part in most settings which take a string.<br />
<br />
= User input fields =<br />
<br />
(not yet implemented, see [https://bugzilla.mozilla.org/show_bug.cgi?id=564043 bug 564043])<br />
<br />
For some ISPs, the IMPA/POP/SMTP username (and maybe other fields) has no relation to the email address and has to be entered separately. E.g. Email address is ben.bucksch@wong.com (chosen by user), but username is G675476 (provided by ISP).<br />
<br />
In this case, an <inputfield> can be added for the username. It will let the client show a textfield to the user. The user-visible label is the one provided in the <inputfield label=""> attribute, to allow the ISP to use custom terminology for "username". The label is not localizable, that would be too complicated and most ISPs are local anyways - if really important, the ISP config server can look at the HTTP headers during the fetch.<br />
<br />
The text that the user entered is written into a placeholder %KEY%, where KEY is the content of the <inputfield key="KEY"> attribute and must be only upper case letters. The placeholder can then be used in other settings, see [[#Placeholders]] above.<br />
<br />
For example, a config file entry<br />
<userinput label="Username" key="%USERNAME%">D123456</userinput><br />
would result in a UI like:<br />
Username: [ ] example: D123456<br />
and cound be used elsewhere in the config file like:<br />
<username>%USERNAME%</username><br />
and if the user enters "D32198", it would be automatically filled in like:<br />
<username>D32198</username><br />
i.e. using D32198 as username for IMAP, POP or SMTP.<br />
<br />
The system is generic, so that it can in theory be used for other values as well. No other such purpose is currently known, apart from a separate POP and SMTP username maybe. It should not be used to let the user supply hostnames, as that would defeat the purpose of the autoconfig and be worse than the manual config UI provided by the client.<br />
<br />
= OAuth2 =<br />
<br />
Due to a defficiency in the OAuth2 spec, the client is usually required to send a client credential key, which in turn requires the client to be registered and approved by the email provider. Unfortunately, this not only allows email providers to block specific email clients (which is contrary to the idea of Open-Source), but also makes it impossible to support arbitrary OAuth2 servers. That's why Thunderbird is forced to hardcode the servers that it supports and the respecive client keys. That means that you cannot use OAuth2 for your own server. Only the servers listed on [https://searchfox.org/comm-central/source/mailnews/base/src/OAuth2Providers.jsm OAuth2Providers.jsm] will work.<br />
<br />
A server using OAuth2 auth looks this:<br />
<pre><br />
...<br />
<incomingServer type="imap"><br />
<hostname>imap.gmail.com</hostname><br />
<port>993</port><br />
<socketType>SSL</socketType><br />
<username>%EMAILADDRESS%</username><br />
<authentication>OAuth2</authentication><br />
<authentication>password-cleartext</authentication><br />
</incomingServer><br />
</emailProvider><br />
<br />
<oAuth2><br />
<issuer>login.yahoo.com</issuer><br />
<scope>mail-w</scope><br />
<authURL>https://api.login.yahoo.com/oauth2/request_auth</authURL><br />
<tokenURL>https://api.login.yahoo.com/oauth2/get_token</tokenURL><br />
</oAuth2><br />
</pre><br />
<br />
Note that the `<oAuth2>` contents are not yet supported by Thunderbird. They are planned to be supported later, removing the need to hardcode these parameters. As of today, `<authentication>OAuth2</authentication>` is supported.<br />
<br />
Note that there are two `<authentication>` elements. This allows a fallback, in case a client does not support OAuth2 or does not have a client key for this OAuth2 issuer and therefore cannot authenticate with this issuer.<br />
<br />
Scope: If we set up email, address book, calendar, and webdav, we do *not* want the user go have to go through 4 authentication processes. Yet, a provider might use different scopes for email and calendar, and that is in line with the OAuth2 spec. The solution is to combine several scopes, using [https://tools.ietf.org/html/rfc6749#section-3.3 spaces as separator], in a single auth request. [https://stackoverflow.com/questions/8449544/multiple-scope-values-to-oauth2/51437063#51437063 The order is important]. That's why we deliberately do not make the scope specific to a service or server, but to the entire configuration. We don't want the user to have to authenticate several times in a row. This is a requirement from the end user.<br />
<br />
= TODO =<br />
<br />
* Values specific to IMAP, e.g. bug 558659 (special folders), bug 572465 (subfolders) etc.. However, most of these can and should be done as IMAP extensions.<br />
* All settings and enum values</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration:ConfigFileFormat&diff=1232899Thunderbird:Autoconfiguration:ConfigFileFormat2021-01-02T05:53:16Z<p>BenB: /* OAuth2 */ Scope</p>
<hr />
<div>Author: [[User:BenB|Ben Bucksch]]. Please do not change this doc without checking with the author.<br />
<br />
This page is the authorative specification of the config file that the Mozilla ISPDB and config services at ISPs return.<br />
<br />
It is XML, with a clearly defined format, to be stable and usable by other mail clients, too. Update Aug 2010: In fact, [http://projects.gnome.org/evolution/ Evolution] and [http://userbase.kde.org/KMail KMail] and [http://www.kontact.org Kontact] now use it, too.<br />
<br />
= Description =<br />
<br />
* [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Description of the different mechanisms to serve the configuration file]<br />
* [https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo How to create your own config file]<br />
<br />
= XML =<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<clientConfig version="1.1"><br />
<emailProvider id="example.com"><br />
<domain>example.com</domain><br />
<domain>example.net</domain><br />
<br />
<displayName>Google Mail</displayName><br />
<displayShortName>GMail</displayShortName><br />
<br />
<!-- type=<br />
"imap": IMAP<br />
"pop3": POP3<br />
--><br />
<incomingServer type="pop3"><br />
<hostname>pop.example.com</hostname><br />
<port>995</port><br />
<!-- "plain": no encryption<br />
"SSL": SSL 3 or TLS 1 on SSL-specific port<br />
"STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS<br />
--><br />
<socketType>SSL</socketType><br />
<username>%EMAILLOCALPART%</username><br />
<!-- Authentication methods:<br />
"password-cleartext",<br />
Send password in the clear<br />
(dangerous, if SSL isn't used either).<br />
AUTH PLAIN, LOGIN or protocol-native login.<br />
"password-encrypted",<br />
A secure encrypted password mechanism.<br />
Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.<br />
"NTLM":<br />
Use NTLM (or NTLMv2 or successors),<br />
the Windows login mechanism.<br />
"GSSAPI":<br />
Use Kerberos / GSSAPI,<br />
a single-signon mechanism used for big sites.<br />
"client-IP-address":<br />
The server recognizes this user based on the IP address.<br />
No authentication needed, the server will require no username nor password.<br />
"TLS-client-cert":<br />
On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)<br />
"OAuth2":<br />
OAuth2. Works only on specific hardcoded servers, please see below. Should be added only as second alternative.<br />
"none":<br />
No authentication<br />
--><br />
<authentication>password-cleartext</authentication><br />
<pop3><br />
<!-- remove the following and leave to client/user? --><br />
<leaveMessagesOnServer>true</leaveMessagesOnServer><br />
<downloadOnBiff>true</downloadOnBiff><br />
<daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer><br />
<!-- only for servers which don't allow checks more often --><br />
<checkInterval minutes="15"/><!-- not yet supported --><br />
</pop3><br />
<password>optional: the user's password</password><br />
</incomingServer><br />
<br />
<outgoingServer type="smtp"><br />
<hostname>smtp.googlemail.com</hostname><br />
<port>587</port><br />
<socketType>STARTTLS</socketType> <!-- see <incomingServer> --><br />
<username>%EMAILLOCALPART%</username> <!-- if smtp-auth --><br />
<!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.<br />
For values, see incoming.<br />
Additional options here:<br />
"SMTP-after-POP":<br />
authenticate to incoming mail server first<br />
before contacting the smtp server.<br />
Compatibility note: Thunderbird 3.0 accepts only "plain",<br />
"secure", "none", and "smtp-after-pop".<br />
It will ignore the whole XML file, if other values are given.<br />
--><br />
<authentication>password-cleartext</authentication><br />
<!-- If the server makes some additional requirements beyond<br />
<authentication>.<br />
"client-IP-address": The server is only reachable or works,<br />
if the user is in a certain IP network, e.g.<br />
the dialed into the ISP's network (DSL, cable, modem) or<br />
connected to a company network.<br />
Note: <authentication>client-IP-address</><br />
means that you may use the server without any auth.<br />
<authentication>password-cleartext</> *and*<br />
<restriction>client-IP-address</> means that you need to<br />
be in the correct IP network *and* (should) authenticate.<br />
Servers which do that are highly discouraged and<br />
should be avoided, see {{bug|556267}}.<br />
Not yet implemented. Spec (element name?) up to change.<br />
--><br />
<restriction>client-IP-address</restriction><br />
<!-- remove the following and leave to client/user? --><br />
<addThisServer>true</addThisServer><br />
<useGlobalPreferredServer>true</useGlobalPreferredServer><br />
<password>optional: the user's password</password><br />
</outgoingServer><br />
<br />
<!-- A page where the ISP describes the configuration.<br />
This is purely informational and currently mainly for<br />
maintenance of the files and not used by the client at all.<br />
Note that we do not necessarily use exactly the config suggested<br />
by the ISP, e.g. when they don't recommend SSL, but it's available,<br />
we will configure SSL.<br />
The text content should contains a description in the native<br />
language of the ISP (customers), and a short English description,<br />
mostly for us.<br />
--><br />
<documentation url="http://www.example.com/help/mail/thunderbird"><br />
<descr lang="en">Configure Thunderbird 2.0 for IMAP</descr><br />
<descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr><br />
</documentation><br />
<br />
</emailProvider><br />
<br />
<!-- Syncronize the user's address book / contacts. Not yet implemented. --><br />
<addressBook type="carddav"><br />
<username>%EMAILADDRESS%</username><br />
<!-- Authentication methods. See also <incomingServer>.<br />
"http-basic":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Basic<br />
"http-digest":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Digest<br />
"OAuth2":<br />
OAuth2. Uses the same token as for email.<br />
--><br />
<authentication>http-basic</authentication><br />
<serverURL>https://contacts.example.com/remote.php/dav<serverURL><br />
</addressBook><br />
<br />
<!-- Syncronize the user's calendar. Not yet implemented. --><br />
<calendar type="caldav"><br />
<username>%EMAILADDRESS%</username><br />
<authentication>http-basic</authentication> <!-- see <addressBook> --><br />
<serverURL>https://calendar.example.com/remote.php/dav<serverURL><br />
</calendar><br />
<br />
<!-- Upload files, allowing the user to share them. Not yet implemented.<br />
This can be used for Thunderbird's FileLink feature,<br />
or to set up a file sync folder on the user's desktop. --><br />
<fileShare type="webdav"><br />
<username>%EMAILADDRESS%</username><br />
<authentication>http-basic</authentication> <!-- see <addressBook> --><br />
<serverURL>https://share.example.com/remote.php/dav<serverURL><br />
</fileShare><br />
<br />
<!-- This allows to access the webmail service of the provider.<br />
The URLs are loaded into a standard webbrowser for the user.<br />
Specifying this is optional. --><br />
<webMail><br />
<!-- Webpage where the user has to log in manually by entering username<br />
and password himself.<br />
HTTPS required. --><br />
<loginPage url="https://mail.example.com/login/" /><br />
<br />
<!-- Same as loginAutomaticDOM, but the website makes checks that<br />
the user comes from the login page. So, open the login page<br />
in the browser, get the page's DOM, fill out name and password<br />
fields for the user, and trigger the login button.<br />
The login button might not be an HTML button, just a div, so<br />
to trigger it, send a click event to it.<br />
HTTPS is required for the URL. --><br />
<loginPageInfo url="https://mail.example.com/login/"><br />
<!-- What to fill into the usernameField.<br />
Format is the same as for <username> within <incomingServer>,<br />
including placeholders. See below for valid placeholders. --><br />
<username>%EMAILADDRESS%</username><br />
<!-- Allows to find the textfield on the page, to fill it out.<br />
The id attribute give the DOM ID,<br />
The name attribute give the DOM name attribute.<br />
One or both of id and name attributes must exist.<br />
Try the ID first (e.g. using getElementById()), if existing.<br />
Otherwise, try finding the element by name.<br />
Don't treat the IDs given in this XML file as trusted,<br />
but before using them, verify the format<br />
(e.g. only characters and digits for IDs).<br />
If you use powerful functions like jQuery, and the XML returns<br />
you code in the username ID, and you feed it unchecked to jQuery,<br />
it may be executed. --><br />
<usernameField id="email_field" name="email" /><br />
<passwordField name="password" /><br />
<!-- The submit button to trigger the server submit<br />
after filling in the fields.<br />
id and name attributes: See <usernameField> --><br />
<loginButton id="submit_button" name="login"/><br />
</loginPageInfo><br />
</webMail><br />
<br />
<!-- see description. Not yet supported, see bug 564043. --><br />
<inputField key="USERNAME" label="Screen name"></inputField><br />
<inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField><br />
<br />
<!-- Add this only when users (who already have an account) have to<br />
do something manually before the account can work with IMAP/POP or SSL.<br />
Note: Per XML, & (ampersand) needs to be escaped to & a m p ;<br />
(without spaces).<br />
Not yet implemented, see bug 586364. --><br />
<enable<br />
visiturl="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"><br />
<instruction>Check 'Enable IMAP and POP' in Google settings page</instruction><br />
<instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction><br />
</enable><br />
<br />
<clientConfigUpdate url="https://www.example.com/config/mozilla.xml" /><br />
<br />
</clientConfig><br />
</pre><br />
<br />
= Multiple servers =<br />
<br />
incomingServer and outgoingServer may appear several times. They are in order of priority, the first entry should generally be used, unless there's a specific factor or policy which prefers a later config.<br />
<br />
For example, there may be configs with STARTTLS and normal SSL. Use the first entry listed. If that fails (server config change), you can try the second config. If IMAP and POP3 servers both exist, then both should be listed; the client or end user can select the protocol which best suits its needs. The config/ISP can, however, express a preference for IMAP or POP3 by what is listed first in the config file.<br />
<br />
= Placeholders =<br />
<br />
The email address (before @ or with domain) that the user entered can be used as placeholder in the config file, so the file is the same for all users (i.e. static).<br />
<br />
Placeholders:<br />
* %EMAILADDRESS% (full email address of the user, usually entered by the user)<br />
* %EMAILLOCALPART% (email address, part before @)<br />
* %EMAILDOMAIN% (email address, part after @)<br />
* %REALNAME% (needed?)<br />
* The key (surrounded by %) in <inputfield key=""> (see below)<br />
<br />
These placeholders can be used as value or value part in most settings which take a string.<br />
<br />
= User input fields =<br />
<br />
(not yet implemented, see [https://bugzilla.mozilla.org/show_bug.cgi?id=564043 bug 564043])<br />
<br />
For some ISPs, the IMPA/POP/SMTP username (and maybe other fields) has no relation to the email address and has to be entered separately. E.g. Email address is ben.bucksch@wong.com (chosen by user), but username is G675476 (provided by ISP).<br />
<br />
In this case, an <inputfield> can be added for the username. It will let the client show a textfield to the user. The user-visible label is the one provided in the <inputfield label=""> attribute, to allow the ISP to use custom terminology for "username". The label is not localizable, that would be too complicated and most ISPs are local anyways - if really important, the ISP config server can look at the HTTP headers during the fetch.<br />
<br />
The text that the user entered is written into a placeholder %KEY%, where KEY is the content of the <inputfield key="KEY"> attribute and must be only upper case letters. The placeholder can then be used in other settings, see [[#Placeholders]] above.<br />
<br />
For example, a config file entry<br />
<userinput label="Username" key="%USERNAME%">D123456</userinput><br />
would result in a UI like:<br />
Username: [ ] example: D123456<br />
and cound be used elsewhere in the config file like:<br />
<username>%USERNAME%</username><br />
and if the user enters "D32198", it would be automatically filled in like:<br />
<username>D32198</username><br />
i.e. using D32198 as username for IMAP, POP or SMTP.<br />
<br />
The system is generic, so that it can in theory be used for other values as well. No other such purpose is currently known, apart from a separate POP and SMTP username maybe. It should not be used to let the user supply hostnames, as that would defeat the purpose of the autoconfig and be worse than the manual config UI provided by the client.<br />
<br />
= OAuth2 =<br />
<br />
Due to a defficiency in the OAuth2 spec, the client is usually required to send a client credential key, which in turn requires the client to be registered and approved by the email provider. Unfortunately, this not only allows email providers to block specific email clients (which is contrary to the idea of Open-Source), but also makes it impossible to support arbitrary OAuth2 servers. That's why Thunderbird is forced to hardcode the servers that it supports and the respecive client keys. That means that you cannot use OAuth2 for your own server. Only the servers listed on [https://searchfox.org/comm-central/source/mailnews/base/src/OAuth2Providers.jsm OAuth2Providers.jsm] will work.<br />
<br />
A server using OAuth2 auth looks this:<br />
<pre><br />
...<br />
<incomingServer type="imap"><br />
<hostname>imap.gmail.com</hostname><br />
<port>993</port><br />
<socketType>SSL</socketType><br />
<username>%EMAILADDRESS%</username><br />
<authentication>OAuth2</authentication><br />
<authentication>password-cleartext</authentication><br />
</incomingServer><br />
</emailProvider><br />
<br />
<oAuth2><br />
<issuer>login.yahoo.com</issuer><br />
<scope>mail-w</scope><br />
<authURL>https://api.login.yahoo.com/oauth2/request_auth</authURL><br />
<tokenURL>https://api.login.yahoo.com/oauth2/get_token</tokenURL><br />
</oAuth2><br />
</pre><br />
<br />
Note that the `<oAuth2>` contents are not yet supported by Thunderbird. They are planned to be supported later, removing the need to hardcode these parameters. As of today, `<authentication>OAuth2</authentication>` is supported.<br />
<br />
Note that there are two `<authentication>` elements. This allows a fallback, in case a client does not support OAuth2 or does not have a client key for this OAuth2 issuer and therefore cannot authenticate with this issuer.<br />
<br />
Scope: If we set up email, address book, calendar, and webdav, we do *not* want the user go have to go through 4 authentication processes. Yet, a provider might use different scopes for email and calendar, and that is in line with the OAuth2 spec. The solution is to combine several scopes, using [https://tools.ietf.org/html/rfc6749#section-3.3 spaces as separator], in a single auth request. [https://stackoverflow.com/questions/8449544/multiple-scope-values-to-oauth2/51437063#51437063 The order is important]. That's why we deliberately do not make the scope specific to a service or server, but to the entire configuration. We don't want the user to have to authenticate several times in a row. This is a requirement from the end user.<br />
<br />
= TODO =<br />
<br />
* Values specific to IMAP, e.g. bug 558659 (special folders), bug 572465 (subfolders) etc.. However, most of these can and should be done as IMAP extensions.<br />
* All settings and enum values</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration:ConfigFileFormat&diff=1232898Thunderbird:Autoconfiguration:ConfigFileFormat2021-01-02T05:41:38Z<p>BenB: /* OAuth2 */ Scope</p>
<hr />
<div>Author: [[User:BenB|Ben Bucksch]]. Please do not change this doc without checking with the author.<br />
<br />
This page is the authorative specification of the config file that the Mozilla ISPDB and config services at ISPs return.<br />
<br />
It is XML, with a clearly defined format, to be stable and usable by other mail clients, too. Update Aug 2010: In fact, [http://projects.gnome.org/evolution/ Evolution] and [http://userbase.kde.org/KMail KMail] and [http://www.kontact.org Kontact] now use it, too.<br />
<br />
= Description =<br />
<br />
* [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Description of the different mechanisms to serve the configuration file]<br />
* [https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo How to create your own config file]<br />
<br />
= XML =<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<clientConfig version="1.1"><br />
<emailProvider id="example.com"><br />
<domain>example.com</domain><br />
<domain>example.net</domain><br />
<br />
<displayName>Google Mail</displayName><br />
<displayShortName>GMail</displayShortName><br />
<br />
<!-- type=<br />
"imap": IMAP<br />
"pop3": POP3<br />
--><br />
<incomingServer type="pop3"><br />
<hostname>pop.example.com</hostname><br />
<port>995</port><br />
<!-- "plain": no encryption<br />
"SSL": SSL 3 or TLS 1 on SSL-specific port<br />
"STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS<br />
--><br />
<socketType>SSL</socketType><br />
<username>%EMAILLOCALPART%</username><br />
<!-- Authentication methods:<br />
"password-cleartext",<br />
Send password in the clear<br />
(dangerous, if SSL isn't used either).<br />
AUTH PLAIN, LOGIN or protocol-native login.<br />
"password-encrypted",<br />
A secure encrypted password mechanism.<br />
Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.<br />
"NTLM":<br />
Use NTLM (or NTLMv2 or successors),<br />
the Windows login mechanism.<br />
"GSSAPI":<br />
Use Kerberos / GSSAPI,<br />
a single-signon mechanism used for big sites.<br />
"client-IP-address":<br />
The server recognizes this user based on the IP address.<br />
No authentication needed, the server will require no username nor password.<br />
"TLS-client-cert":<br />
On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)<br />
"OAuth2":<br />
OAuth2. Works only on specific hardcoded servers, please see below. Should be added only as second alternative.<br />
"none":<br />
No authentication<br />
--><br />
<authentication>password-cleartext</authentication><br />
<pop3><br />
<!-- remove the following and leave to client/user? --><br />
<leaveMessagesOnServer>true</leaveMessagesOnServer><br />
<downloadOnBiff>true</downloadOnBiff><br />
<daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer><br />
<!-- only for servers which don't allow checks more often --><br />
<checkInterval minutes="15"/><!-- not yet supported --><br />
</pop3><br />
<password>optional: the user's password</password><br />
</incomingServer><br />
<br />
<outgoingServer type="smtp"><br />
<hostname>smtp.googlemail.com</hostname><br />
<port>587</port><br />
<socketType>STARTTLS</socketType> <!-- see <incomingServer> --><br />
<username>%EMAILLOCALPART%</username> <!-- if smtp-auth --><br />
<!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.<br />
For values, see incoming.<br />
Additional options here:<br />
"SMTP-after-POP":<br />
authenticate to incoming mail server first<br />
before contacting the smtp server.<br />
Compatibility note: Thunderbird 3.0 accepts only "plain",<br />
"secure", "none", and "smtp-after-pop".<br />
It will ignore the whole XML file, if other values are given.<br />
--><br />
<authentication>password-cleartext</authentication><br />
<!-- If the server makes some additional requirements beyond<br />
<authentication>.<br />
"client-IP-address": The server is only reachable or works,<br />
if the user is in a certain IP network, e.g.<br />
the dialed into the ISP's network (DSL, cable, modem) or<br />
connected to a company network.<br />
Note: <authentication>client-IP-address</><br />
means that you may use the server without any auth.<br />
<authentication>password-cleartext</> *and*<br />
<restriction>client-IP-address</> means that you need to<br />
be in the correct IP network *and* (should) authenticate.<br />
Servers which do that are highly discouraged and<br />
should be avoided, see {{bug|556267}}.<br />
Not yet implemented. Spec (element name?) up to change.<br />
--><br />
<restriction>client-IP-address</restriction><br />
<!-- remove the following and leave to client/user? --><br />
<addThisServer>true</addThisServer><br />
<useGlobalPreferredServer>true</useGlobalPreferredServer><br />
<password>optional: the user's password</password><br />
</outgoingServer><br />
<br />
<!-- A page where the ISP describes the configuration.<br />
This is purely informational and currently mainly for<br />
maintenance of the files and not used by the client at all.<br />
Note that we do not necessarily use exactly the config suggested<br />
by the ISP, e.g. when they don't recommend SSL, but it's available,<br />
we will configure SSL.<br />
The text content should contains a description in the native<br />
language of the ISP (customers), and a short English description,<br />
mostly for us.<br />
--><br />
<documentation url="http://www.example.com/help/mail/thunderbird"><br />
<descr lang="en">Configure Thunderbird 2.0 for IMAP</descr><br />
<descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr><br />
</documentation><br />
<br />
</emailProvider><br />
<br />
<!-- Syncronize the user's address book / contacts. Not yet implemented. --><br />
<addressBook type="carddav"><br />
<username>%EMAILADDRESS%</username><br />
<!-- Authentication methods. See also <incomingServer>.<br />
"http-basic":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Basic<br />
"http-digest":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Digest<br />
"OAuth2":<br />
OAuth2. Uses the same token as for email.<br />
--><br />
<authentication>http-basic</authentication><br />
<serverURL>https://contacts.example.com/remote.php/dav<serverURL><br />
</addressBook><br />
<br />
<!-- Syncronize the user's calendar. Not yet implemented. --><br />
<calendar type="caldav"><br />
<username>%EMAILADDRESS%</username><br />
<authentication>http-basic</authentication> <!-- see <addressBook> --><br />
<serverURL>https://calendar.example.com/remote.php/dav<serverURL><br />
</calendar><br />
<br />
<!-- Upload files, allowing the user to share them. Not yet implemented.<br />
This can be used for Thunderbird's FileLink feature,<br />
or to set up a file sync folder on the user's desktop. --><br />
<fileShare type="webdav"><br />
<username>%EMAILADDRESS%</username><br />
<authentication>http-basic</authentication> <!-- see <addressBook> --><br />
<serverURL>https://share.example.com/remote.php/dav<serverURL><br />
</fileShare><br />
<br />
<!-- This allows to access the webmail service of the provider.<br />
The URLs are loaded into a standard webbrowser for the user.<br />
Specifying this is optional. --><br />
<webMail><br />
<!-- Webpage where the user has to log in manually by entering username<br />
and password himself.<br />
HTTPS required. --><br />
<loginPage url="https://mail.example.com/login/" /><br />
<br />
<!-- Same as loginAutomaticDOM, but the website makes checks that<br />
the user comes from the login page. So, open the login page<br />
in the browser, get the page's DOM, fill out name and password<br />
fields for the user, and trigger the login button.<br />
The login button might not be an HTML button, just a div, so<br />
to trigger it, send a click event to it.<br />
HTTPS is required for the URL. --><br />
<loginPageInfo url="https://mail.example.com/login/"><br />
<!-- What to fill into the usernameField.<br />
Format is the same as for <username> within <incomingServer>,<br />
including placeholders. See below for valid placeholders. --><br />
<username>%EMAILADDRESS%</username><br />
<!-- Allows to find the textfield on the page, to fill it out.<br />
The id attribute give the DOM ID,<br />
The name attribute give the DOM name attribute.<br />
One or both of id and name attributes must exist.<br />
Try the ID first (e.g. using getElementById()), if existing.<br />
Otherwise, try finding the element by name.<br />
Don't treat the IDs given in this XML file as trusted,<br />
but before using them, verify the format<br />
(e.g. only characters and digits for IDs).<br />
If you use powerful functions like jQuery, and the XML returns<br />
you code in the username ID, and you feed it unchecked to jQuery,<br />
it may be executed. --><br />
<usernameField id="email_field" name="email" /><br />
<passwordField name="password" /><br />
<!-- The submit button to trigger the server submit<br />
after filling in the fields.<br />
id and name attributes: See <usernameField> --><br />
<loginButton id="submit_button" name="login"/><br />
</loginPageInfo><br />
</webMail><br />
<br />
<!-- see description. Not yet supported, see bug 564043. --><br />
<inputField key="USERNAME" label="Screen name"></inputField><br />
<inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField><br />
<br />
<!-- Add this only when users (who already have an account) have to<br />
do something manually before the account can work with IMAP/POP or SSL.<br />
Note: Per XML, & (ampersand) needs to be escaped to & a m p ;<br />
(without spaces).<br />
Not yet implemented, see bug 586364. --><br />
<enable<br />
visiturl="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"><br />
<instruction>Check 'Enable IMAP and POP' in Google settings page</instruction><br />
<instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction><br />
</enable><br />
<br />
<clientConfigUpdate url="https://www.example.com/config/mozilla.xml" /><br />
<br />
</clientConfig><br />
</pre><br />
<br />
= Multiple servers =<br />
<br />
incomingServer and outgoingServer may appear several times. They are in order of priority, the first entry should generally be used, unless there's a specific factor or policy which prefers a later config.<br />
<br />
For example, there may be configs with STARTTLS and normal SSL. Use the first entry listed. If that fails (server config change), you can try the second config. If IMAP and POP3 servers both exist, then both should be listed; the client or end user can select the protocol which best suits its needs. The config/ISP can, however, express a preference for IMAP or POP3 by what is listed first in the config file.<br />
<br />
= Placeholders =<br />
<br />
The email address (before @ or with domain) that the user entered can be used as placeholder in the config file, so the file is the same for all users (i.e. static).<br />
<br />
Placeholders:<br />
* %EMAILADDRESS% (full email address of the user, usually entered by the user)<br />
* %EMAILLOCALPART% (email address, part before @)<br />
* %EMAILDOMAIN% (email address, part after @)<br />
* %REALNAME% (needed?)<br />
* The key (surrounded by %) in <inputfield key=""> (see below)<br />
<br />
These placeholders can be used as value or value part in most settings which take a string.<br />
<br />
= User input fields =<br />
<br />
(not yet implemented, see [https://bugzilla.mozilla.org/show_bug.cgi?id=564043 bug 564043])<br />
<br />
For some ISPs, the IMPA/POP/SMTP username (and maybe other fields) has no relation to the email address and has to be entered separately. E.g. Email address is ben.bucksch@wong.com (chosen by user), but username is G675476 (provided by ISP).<br />
<br />
In this case, an <inputfield> can be added for the username. It will let the client show a textfield to the user. The user-visible label is the one provided in the <inputfield label=""> attribute, to allow the ISP to use custom terminology for "username". The label is not localizable, that would be too complicated and most ISPs are local anyways - if really important, the ISP config server can look at the HTTP headers during the fetch.<br />
<br />
The text that the user entered is written into a placeholder %KEY%, where KEY is the content of the <inputfield key="KEY"> attribute and must be only upper case letters. The placeholder can then be used in other settings, see [[#Placeholders]] above.<br />
<br />
For example, a config file entry<br />
<userinput label="Username" key="%USERNAME%">D123456</userinput><br />
would result in a UI like:<br />
Username: [ ] example: D123456<br />
and cound be used elsewhere in the config file like:<br />
<username>%USERNAME%</username><br />
and if the user enters "D32198", it would be automatically filled in like:<br />
<username>D32198</username><br />
i.e. using D32198 as username for IMAP, POP or SMTP.<br />
<br />
The system is generic, so that it can in theory be used for other values as well. No other such purpose is currently known, apart from a separate POP and SMTP username maybe. It should not be used to let the user supply hostnames, as that would defeat the purpose of the autoconfig and be worse than the manual config UI provided by the client.<br />
<br />
= OAuth2 =<br />
<br />
Due to a defficiency in the OAuth2 spec, the client is usually required to send a client credential key, which in turn requires the client to be registered and approved by the email provider. Unfortunately, this not only allows email providers to block specific email clients (which is contrary to the idea of Open-Source), but also makes it impossible to support arbitrary OAuth2 servers. That's why Thunderbird is forced to hardcode the servers that it supports and the respecive client keys. That means that you cannot use OAuth2 for your own server. Only the servers listed on [https://searchfox.org/comm-central/source/mailnews/base/src/OAuth2Providers.jsm OAuth2Providers.jsm] will work.<br />
<br />
A server using OAuth2 auth looks this:<br />
<pre><br />
...<br />
<incomingServer type="imap"><br />
<hostname>imap.gmail.com</hostname><br />
<port>993</port><br />
<socketType>SSL</socketType><br />
<username>%EMAILADDRESS%</username><br />
<authentication>OAuth2</authentication><br />
<authentication>password-cleartext</authentication><br />
</incomingServer><br />
</emailProvider><br />
<br />
<oAuth2><br />
<issuer>login.yahoo.com</issuer><br />
<scope>mail-w</scope><br />
<authURL>https://api.login.yahoo.com/oauth2/request_auth</authURL><br />
<tokenURL>https://api.login.yahoo.com/oauth2/get_token</tokenURL><br />
</oAuth2><br />
</pre><br />
<br />
Note that the `<oAuth2>` contents are not yet supported by Thunderbird. They are planned to be supported later, removing the need to hardcode these parameters. As of today, `<authentication>OAuth2</authentication>` is supported.<br />
<br />
Note that there are two `<authentication>` elements. This allows a fallback, in case a client does not support OAuth2 or does not have a client key for this OAuth2 issuer and therefore cannot authenticate with this issuer.<br />
<br />
The scope is difficult. If we set up email, address book, calendar, and webdav, we do *not* want the user go have to go through 4 authentication processes. Yet, a provider might use different scopes for email and calendar, and that is in line with the OAuth2 spec. The solution is to combine several scopes, using [https://tools.ietf.org/html/rfc6749#section-3.3 spaces as separator], in a single auth request. However, it is reported that this fails for some providers. If really necessary, we could add it as optional parameter `<authentication scope="mail-w">OAuth2</authentication>`, while still defaulting to `<oAuth2>.<scope>`, but that would cause the above mentioned issue of requiring several authentication processes.<br />
<br />
= TODO =<br />
<br />
* Values specific to IMAP, e.g. bug 558659 (special folders), bug 572465 (subfolders) etc.. However, most of these can and should be done as IMAP extensions.<br />
* All settings and enum values</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration:ConfigFileFormat&diff=1232897Thunderbird:Autoconfiguration:ConfigFileFormat2021-01-02T05:22:12Z<p>BenB: /* OAuth2 */ Move OAuth outside the <incomingServer>, to avoid repetition</p>
<hr />
<div>Author: [[User:BenB|Ben Bucksch]]. Please do not change this doc without checking with the author.<br />
<br />
This page is the authorative specification of the config file that the Mozilla ISPDB and config services at ISPs return.<br />
<br />
It is XML, with a clearly defined format, to be stable and usable by other mail clients, too. Update Aug 2010: In fact, [http://projects.gnome.org/evolution/ Evolution] and [http://userbase.kde.org/KMail KMail] and [http://www.kontact.org Kontact] now use it, too.<br />
<br />
= Description =<br />
<br />
* [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Description of the different mechanisms to serve the configuration file]<br />
* [https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo How to create your own config file]<br />
<br />
= XML =<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<clientConfig version="1.1"><br />
<emailProvider id="example.com"><br />
<domain>example.com</domain><br />
<domain>example.net</domain><br />
<br />
<displayName>Google Mail</displayName><br />
<displayShortName>GMail</displayShortName><br />
<br />
<!-- type=<br />
"imap": IMAP<br />
"pop3": POP3<br />
--><br />
<incomingServer type="pop3"><br />
<hostname>pop.example.com</hostname><br />
<port>995</port><br />
<!-- "plain": no encryption<br />
"SSL": SSL 3 or TLS 1 on SSL-specific port<br />
"STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS<br />
--><br />
<socketType>SSL</socketType><br />
<username>%EMAILLOCALPART%</username><br />
<!-- Authentication methods:<br />
"password-cleartext",<br />
Send password in the clear<br />
(dangerous, if SSL isn't used either).<br />
AUTH PLAIN, LOGIN or protocol-native login.<br />
"password-encrypted",<br />
A secure encrypted password mechanism.<br />
Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.<br />
"NTLM":<br />
Use NTLM (or NTLMv2 or successors),<br />
the Windows login mechanism.<br />
"GSSAPI":<br />
Use Kerberos / GSSAPI,<br />
a single-signon mechanism used for big sites.<br />
"client-IP-address":<br />
The server recognizes this user based on the IP address.<br />
No authentication needed, the server will require no username nor password.<br />
"TLS-client-cert":<br />
On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)<br />
"OAuth2":<br />
OAuth2. Works only on specific hardcoded servers, please see below. Should be added only as second alternative.<br />
"none":<br />
No authentication<br />
--><br />
<authentication>password-cleartext</authentication><br />
<pop3><br />
<!-- remove the following and leave to client/user? --><br />
<leaveMessagesOnServer>true</leaveMessagesOnServer><br />
<downloadOnBiff>true</downloadOnBiff><br />
<daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer><br />
<!-- only for servers which don't allow checks more often --><br />
<checkInterval minutes="15"/><!-- not yet supported --><br />
</pop3><br />
<password>optional: the user's password</password><br />
</incomingServer><br />
<br />
<outgoingServer type="smtp"><br />
<hostname>smtp.googlemail.com</hostname><br />
<port>587</port><br />
<socketType>STARTTLS</socketType> <!-- see <incomingServer> --><br />
<username>%EMAILLOCALPART%</username> <!-- if smtp-auth --><br />
<!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.<br />
For values, see incoming.<br />
Additional options here:<br />
"SMTP-after-POP":<br />
authenticate to incoming mail server first<br />
before contacting the smtp server.<br />
Compatibility note: Thunderbird 3.0 accepts only "plain",<br />
"secure", "none", and "smtp-after-pop".<br />
It will ignore the whole XML file, if other values are given.<br />
--><br />
<authentication>password-cleartext</authentication><br />
<!-- If the server makes some additional requirements beyond<br />
<authentication>.<br />
"client-IP-address": The server is only reachable or works,<br />
if the user is in a certain IP network, e.g.<br />
the dialed into the ISP's network (DSL, cable, modem) or<br />
connected to a company network.<br />
Note: <authentication>client-IP-address</><br />
means that you may use the server without any auth.<br />
<authentication>password-cleartext</> *and*<br />
<restriction>client-IP-address</> means that you need to<br />
be in the correct IP network *and* (should) authenticate.<br />
Servers which do that are highly discouraged and<br />
should be avoided, see {{bug|556267}}.<br />
Not yet implemented. Spec (element name?) up to change.<br />
--><br />
<restriction>client-IP-address</restriction><br />
<!-- remove the following and leave to client/user? --><br />
<addThisServer>true</addThisServer><br />
<useGlobalPreferredServer>true</useGlobalPreferredServer><br />
<password>optional: the user's password</password><br />
</outgoingServer><br />
<br />
<!-- A page where the ISP describes the configuration.<br />
This is purely informational and currently mainly for<br />
maintenance of the files and not used by the client at all.<br />
Note that we do not necessarily use exactly the config suggested<br />
by the ISP, e.g. when they don't recommend SSL, but it's available,<br />
we will configure SSL.<br />
The text content should contains a description in the native<br />
language of the ISP (customers), and a short English description,<br />
mostly for us.<br />
--><br />
<documentation url="http://www.example.com/help/mail/thunderbird"><br />
<descr lang="en">Configure Thunderbird 2.0 for IMAP</descr><br />
<descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr><br />
</documentation><br />
<br />
</emailProvider><br />
<br />
<!-- Syncronize the user's address book / contacts. Not yet implemented. --><br />
<addressBook type="carddav"><br />
<username>%EMAILADDRESS%</username><br />
<!-- Authentication methods. See also <incomingServer>.<br />
"http-basic":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Basic<br />
"http-digest":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Digest<br />
"OAuth2":<br />
OAuth2. Uses the same token as for email.<br />
--><br />
<authentication>http-basic</authentication><br />
<serverURL>https://contacts.example.com/remote.php/dav<serverURL><br />
</addressBook><br />
<br />
<!-- Syncronize the user's calendar. Not yet implemented. --><br />
<calendar type="caldav"><br />
<username>%EMAILADDRESS%</username><br />
<authentication>http-basic</authentication> <!-- see <addressBook> --><br />
<serverURL>https://calendar.example.com/remote.php/dav<serverURL><br />
</calendar><br />
<br />
<!-- Upload files, allowing the user to share them. Not yet implemented.<br />
This can be used for Thunderbird's FileLink feature,<br />
or to set up a file sync folder on the user's desktop. --><br />
<fileShare type="webdav"><br />
<username>%EMAILADDRESS%</username><br />
<authentication>http-basic</authentication> <!-- see <addressBook> --><br />
<serverURL>https://share.example.com/remote.php/dav<serverURL><br />
</fileShare><br />
<br />
<!-- This allows to access the webmail service of the provider.<br />
The URLs are loaded into a standard webbrowser for the user.<br />
Specifying this is optional. --><br />
<webMail><br />
<!-- Webpage where the user has to log in manually by entering username<br />
and password himself.<br />
HTTPS required. --><br />
<loginPage url="https://mail.example.com/login/" /><br />
<br />
<!-- Same as loginAutomaticDOM, but the website makes checks that<br />
the user comes from the login page. So, open the login page<br />
in the browser, get the page's DOM, fill out name and password<br />
fields for the user, and trigger the login button.<br />
The login button might not be an HTML button, just a div, so<br />
to trigger it, send a click event to it.<br />
HTTPS is required for the URL. --><br />
<loginPageInfo url="https://mail.example.com/login/"><br />
<!-- What to fill into the usernameField.<br />
Format is the same as for <username> within <incomingServer>,<br />
including placeholders. See below for valid placeholders. --><br />
<username>%EMAILADDRESS%</username><br />
<!-- Allows to find the textfield on the page, to fill it out.<br />
The id attribute give the DOM ID,<br />
The name attribute give the DOM name attribute.<br />
One or both of id and name attributes must exist.<br />
Try the ID first (e.g. using getElementById()), if existing.<br />
Otherwise, try finding the element by name.<br />
Don't treat the IDs given in this XML file as trusted,<br />
but before using them, verify the format<br />
(e.g. only characters and digits for IDs).<br />
If you use powerful functions like jQuery, and the XML returns<br />
you code in the username ID, and you feed it unchecked to jQuery,<br />
it may be executed. --><br />
<usernameField id="email_field" name="email" /><br />
<passwordField name="password" /><br />
<!-- The submit button to trigger the server submit<br />
after filling in the fields.<br />
id and name attributes: See <usernameField> --><br />
<loginButton id="submit_button" name="login"/><br />
</loginPageInfo><br />
</webMail><br />
<br />
<!-- see description. Not yet supported, see bug 564043. --><br />
<inputField key="USERNAME" label="Screen name"></inputField><br />
<inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField><br />
<br />
<!-- Add this only when users (who already have an account) have to<br />
do something manually before the account can work with IMAP/POP or SSL.<br />
Note: Per XML, & (ampersand) needs to be escaped to & a m p ;<br />
(without spaces).<br />
Not yet implemented, see bug 586364. --><br />
<enable<br />
visiturl="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"><br />
<instruction>Check 'Enable IMAP and POP' in Google settings page</instruction><br />
<instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction><br />
</enable><br />
<br />
<clientConfigUpdate url="https://www.example.com/config/mozilla.xml" /><br />
<br />
</clientConfig><br />
</pre><br />
<br />
= Multiple servers =<br />
<br />
incomingServer and outgoingServer may appear several times. They are in order of priority, the first entry should generally be used, unless there's a specific factor or policy which prefers a later config.<br />
<br />
For example, there may be configs with STARTTLS and normal SSL. Use the first entry listed. If that fails (server config change), you can try the second config. If IMAP and POP3 servers both exist, then both should be listed; the client or end user can select the protocol which best suits its needs. The config/ISP can, however, express a preference for IMAP or POP3 by what is listed first in the config file.<br />
<br />
= Placeholders =<br />
<br />
The email address (before @ or with domain) that the user entered can be used as placeholder in the config file, so the file is the same for all users (i.e. static).<br />
<br />
Placeholders:<br />
* %EMAILADDRESS% (full email address of the user, usually entered by the user)<br />
* %EMAILLOCALPART% (email address, part before @)<br />
* %EMAILDOMAIN% (email address, part after @)<br />
* %REALNAME% (needed?)<br />
* The key (surrounded by %) in <inputfield key=""> (see below)<br />
<br />
These placeholders can be used as value or value part in most settings which take a string.<br />
<br />
= User input fields =<br />
<br />
(not yet implemented, see [https://bugzilla.mozilla.org/show_bug.cgi?id=564043 bug 564043])<br />
<br />
For some ISPs, the IMPA/POP/SMTP username (and maybe other fields) has no relation to the email address and has to be entered separately. E.g. Email address is ben.bucksch@wong.com (chosen by user), but username is G675476 (provided by ISP).<br />
<br />
In this case, an <inputfield> can be added for the username. It will let the client show a textfield to the user. The user-visible label is the one provided in the <inputfield label=""> attribute, to allow the ISP to use custom terminology for "username". The label is not localizable, that would be too complicated and most ISPs are local anyways - if really important, the ISP config server can look at the HTTP headers during the fetch.<br />
<br />
The text that the user entered is written into a placeholder %KEY%, where KEY is the content of the <inputfield key="KEY"> attribute and must be only upper case letters. The placeholder can then be used in other settings, see [[#Placeholders]] above.<br />
<br />
For example, a config file entry<br />
<userinput label="Username" key="%USERNAME%">D123456</userinput><br />
would result in a UI like:<br />
Username: [ ] example: D123456<br />
and cound be used elsewhere in the config file like:<br />
<username>%USERNAME%</username><br />
and if the user enters "D32198", it would be automatically filled in like:<br />
<username>D32198</username><br />
i.e. using D32198 as username for IMAP, POP or SMTP.<br />
<br />
The system is generic, so that it can in theory be used for other values as well. No other such purpose is currently known, apart from a separate POP and SMTP username maybe. It should not be used to let the user supply hostnames, as that would defeat the purpose of the autoconfig and be worse than the manual config UI provided by the client.<br />
<br />
= OAuth2 =<br />
<br />
Due to a defficiency in the OAuth2 spec, the client is usually required to send a client credential key, which in turn requires the client to be registered and approved by the email provider. Unfortunately, this not only allows email providers to block specific email clients (which is contrary to the idea of Open-Source), but also makes it impossible to support arbitrary OAuth2 servers. That's why Thunderbird is forced to hardcode the servers that it supports and the respecive client keys. That means that you cannot use OAuth2 for your own server. Only the servers listed on [https://searchfox.org/comm-central/source/mailnews/base/src/OAuth2Providers.jsm OAuth2Providers.jsm] will work.<br />
<br />
A server using OAuth2 auth looks this:<br />
<pre><br />
...<br />
<incomingServer type="imap"><br />
<hostname>imap.gmail.com</hostname><br />
<port>993</port><br />
<socketType>SSL</socketType><br />
<username>%EMAILADDRESS%</username><br />
<authentication>OAuth2</authentication><br />
<authentication>password-cleartext</authentication><br />
</incomingServer><br />
</emailProvider><br />
<oAuth2><br />
<issuer>login.yahoo.com<issuer><br />
<scope>mail-w<scope><br />
<authURL>https://api.login.yahoo.com/oauth2/request_auth</authURL><br />
<tokenURL>https://api.login.yahoo.com/oauth2/get_token</tokenURL><br />
<oAuth2><br />
</pre><br />
<br />
Note that the `<oAuth2>` contents are not yet supported by Thunderbird. They are planned to be supported later, removing the need to hardcode these parameters. As of today, `<authentication>OAuth2</authentication>` is supported.<br />
<br />
Note that there are two `<authentication>` elements. This allows a fallback, in case a client does not support OAuth2 or does not have a client key for this OAuth2 issuer and therefore cannot authenticate with this issuer.<br />
<br />
= TODO =<br />
<br />
* Values specific to IMAP, e.g. bug 558659 (special folders), bug 572465 (subfolders) etc.. However, most of these can and should be done as IMAP extensions.<br />
* All settings and enum values</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration:ConfigFileFormat&diff=1232896Thunderbird:Autoconfiguration:ConfigFileFormat2021-01-02T04:52:18Z<p>BenB: /* XML */ Move <inputField> and <enable> outside <emailProvider>, because they apply to calendar etc., too.</p>
<hr />
<div>Author: [[User:BenB|Ben Bucksch]]. Please do not change this doc without checking with the author.<br />
<br />
This page is the authorative specification of the config file that the Mozilla ISPDB and config services at ISPs return.<br />
<br />
It is XML, with a clearly defined format, to be stable and usable by other mail clients, too. Update Aug 2010: In fact, [http://projects.gnome.org/evolution/ Evolution] and [http://userbase.kde.org/KMail KMail] and [http://www.kontact.org Kontact] now use it, too.<br />
<br />
= Description =<br />
<br />
* [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Description of the different mechanisms to serve the configuration file]<br />
* [https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo How to create your own config file]<br />
<br />
= XML =<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<clientConfig version="1.1"><br />
<emailProvider id="example.com"><br />
<domain>example.com</domain><br />
<domain>example.net</domain><br />
<br />
<displayName>Google Mail</displayName><br />
<displayShortName>GMail</displayShortName><br />
<br />
<!-- type=<br />
"imap": IMAP<br />
"pop3": POP3<br />
--><br />
<incomingServer type="pop3"><br />
<hostname>pop.example.com</hostname><br />
<port>995</port><br />
<!-- "plain": no encryption<br />
"SSL": SSL 3 or TLS 1 on SSL-specific port<br />
"STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS<br />
--><br />
<socketType>SSL</socketType><br />
<username>%EMAILLOCALPART%</username><br />
<!-- Authentication methods:<br />
"password-cleartext",<br />
Send password in the clear<br />
(dangerous, if SSL isn't used either).<br />
AUTH PLAIN, LOGIN or protocol-native login.<br />
"password-encrypted",<br />
A secure encrypted password mechanism.<br />
Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.<br />
"NTLM":<br />
Use NTLM (or NTLMv2 or successors),<br />
the Windows login mechanism.<br />
"GSSAPI":<br />
Use Kerberos / GSSAPI,<br />
a single-signon mechanism used for big sites.<br />
"client-IP-address":<br />
The server recognizes this user based on the IP address.<br />
No authentication needed, the server will require no username nor password.<br />
"TLS-client-cert":<br />
On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)<br />
"OAuth2":<br />
OAuth2. Works only on specific hardcoded servers, please see below. Should be added only as second alternative.<br />
"none":<br />
No authentication<br />
--><br />
<authentication>password-cleartext</authentication><br />
<pop3><br />
<!-- remove the following and leave to client/user? --><br />
<leaveMessagesOnServer>true</leaveMessagesOnServer><br />
<downloadOnBiff>true</downloadOnBiff><br />
<daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer><br />
<!-- only for servers which don't allow checks more often --><br />
<checkInterval minutes="15"/><!-- not yet supported --><br />
</pop3><br />
<password>optional: the user's password</password><br />
</incomingServer><br />
<br />
<outgoingServer type="smtp"><br />
<hostname>smtp.googlemail.com</hostname><br />
<port>587</port><br />
<socketType>STARTTLS</socketType> <!-- see <incomingServer> --><br />
<username>%EMAILLOCALPART%</username> <!-- if smtp-auth --><br />
<!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.<br />
For values, see incoming.<br />
Additional options here:<br />
"SMTP-after-POP":<br />
authenticate to incoming mail server first<br />
before contacting the smtp server.<br />
Compatibility note: Thunderbird 3.0 accepts only "plain",<br />
"secure", "none", and "smtp-after-pop".<br />
It will ignore the whole XML file, if other values are given.<br />
--><br />
<authentication>password-cleartext</authentication><br />
<!-- If the server makes some additional requirements beyond<br />
<authentication>.<br />
"client-IP-address": The server is only reachable or works,<br />
if the user is in a certain IP network, e.g.<br />
the dialed into the ISP's network (DSL, cable, modem) or<br />
connected to a company network.<br />
Note: <authentication>client-IP-address</><br />
means that you may use the server without any auth.<br />
<authentication>password-cleartext</> *and*<br />
<restriction>client-IP-address</> means that you need to<br />
be in the correct IP network *and* (should) authenticate.<br />
Servers which do that are highly discouraged and<br />
should be avoided, see {{bug|556267}}.<br />
Not yet implemented. Spec (element name?) up to change.<br />
--><br />
<restriction>client-IP-address</restriction><br />
<!-- remove the following and leave to client/user? --><br />
<addThisServer>true</addThisServer><br />
<useGlobalPreferredServer>true</useGlobalPreferredServer><br />
<password>optional: the user's password</password><br />
</outgoingServer><br />
<br />
<!-- A page where the ISP describes the configuration.<br />
This is purely informational and currently mainly for<br />
maintenance of the files and not used by the client at all.<br />
Note that we do not necessarily use exactly the config suggested<br />
by the ISP, e.g. when they don't recommend SSL, but it's available,<br />
we will configure SSL.<br />
The text content should contains a description in the native<br />
language of the ISP (customers), and a short English description,<br />
mostly for us.<br />
--><br />
<documentation url="http://www.example.com/help/mail/thunderbird"><br />
<descr lang="en">Configure Thunderbird 2.0 for IMAP</descr><br />
<descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr><br />
</documentation><br />
<br />
</emailProvider><br />
<br />
<!-- Syncronize the user's address book / contacts. Not yet implemented. --><br />
<addressBook type="carddav"><br />
<username>%EMAILADDRESS%</username><br />
<!-- Authentication methods. See also <incomingServer>.<br />
"http-basic":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Basic<br />
"http-digest":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Digest<br />
"OAuth2":<br />
OAuth2. Uses the same token as for email.<br />
--><br />
<authentication>http-basic</authentication><br />
<serverURL>https://contacts.example.com/remote.php/dav<serverURL><br />
</addressBook><br />
<br />
<!-- Syncronize the user's calendar. Not yet implemented. --><br />
<calendar type="caldav"><br />
<username>%EMAILADDRESS%</username><br />
<authentication>http-basic</authentication> <!-- see <addressBook> --><br />
<serverURL>https://calendar.example.com/remote.php/dav<serverURL><br />
</calendar><br />
<br />
<!-- Upload files, allowing the user to share them. Not yet implemented.<br />
This can be used for Thunderbird's FileLink feature,<br />
or to set up a file sync folder on the user's desktop. --><br />
<fileShare type="webdav"><br />
<username>%EMAILADDRESS%</username><br />
<authentication>http-basic</authentication> <!-- see <addressBook> --><br />
<serverURL>https://share.example.com/remote.php/dav<serverURL><br />
</fileShare><br />
<br />
<!-- This allows to access the webmail service of the provider.<br />
The URLs are loaded into a standard webbrowser for the user.<br />
Specifying this is optional. --><br />
<webMail><br />
<!-- Webpage where the user has to log in manually by entering username<br />
and password himself.<br />
HTTPS required. --><br />
<loginPage url="https://mail.example.com/login/" /><br />
<br />
<!-- Same as loginAutomaticDOM, but the website makes checks that<br />
the user comes from the login page. So, open the login page<br />
in the browser, get the page's DOM, fill out name and password<br />
fields for the user, and trigger the login button.<br />
The login button might not be an HTML button, just a div, so<br />
to trigger it, send a click event to it.<br />
HTTPS is required for the URL. --><br />
<loginPageInfo url="https://mail.example.com/login/"><br />
<!-- What to fill into the usernameField.<br />
Format is the same as for <username> within <incomingServer>,<br />
including placeholders. See below for valid placeholders. --><br />
<username>%EMAILADDRESS%</username><br />
<!-- Allows to find the textfield on the page, to fill it out.<br />
The id attribute give the DOM ID,<br />
The name attribute give the DOM name attribute.<br />
One or both of id and name attributes must exist.<br />
Try the ID first (e.g. using getElementById()), if existing.<br />
Otherwise, try finding the element by name.<br />
Don't treat the IDs given in this XML file as trusted,<br />
but before using them, verify the format<br />
(e.g. only characters and digits for IDs).<br />
If you use powerful functions like jQuery, and the XML returns<br />
you code in the username ID, and you feed it unchecked to jQuery,<br />
it may be executed. --><br />
<usernameField id="email_field" name="email" /><br />
<passwordField name="password" /><br />
<!-- The submit button to trigger the server submit<br />
after filling in the fields.<br />
id and name attributes: See <usernameField> --><br />
<loginButton id="submit_button" name="login"/><br />
</loginPageInfo><br />
</webMail><br />
<br />
<!-- see description. Not yet supported, see bug 564043. --><br />
<inputField key="USERNAME" label="Screen name"></inputField><br />
<inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField><br />
<br />
<!-- Add this only when users (who already have an account) have to<br />
do something manually before the account can work with IMAP/POP or SSL.<br />
Note: Per XML, & (ampersand) needs to be escaped to & a m p ;<br />
(without spaces).<br />
Not yet implemented, see bug 586364. --><br />
<enable<br />
visiturl="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"><br />
<instruction>Check 'Enable IMAP and POP' in Google settings page</instruction><br />
<instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction><br />
</enable><br />
<br />
<clientConfigUpdate url="https://www.example.com/config/mozilla.xml" /><br />
<br />
</clientConfig><br />
</pre><br />
<br />
= Multiple servers =<br />
<br />
incomingServer and outgoingServer may appear several times. They are in order of priority, the first entry should generally be used, unless there's a specific factor or policy which prefers a later config.<br />
<br />
For example, there may be configs with STARTTLS and normal SSL. Use the first entry listed. If that fails (server config change), you can try the second config. If IMAP and POP3 servers both exist, then both should be listed; the client or end user can select the protocol which best suits its needs. The config/ISP can, however, express a preference for IMAP or POP3 by what is listed first in the config file.<br />
<br />
= Placeholders =<br />
<br />
The email address (before @ or with domain) that the user entered can be used as placeholder in the config file, so the file is the same for all users (i.e. static).<br />
<br />
Placeholders:<br />
* %EMAILADDRESS% (full email address of the user, usually entered by the user)<br />
* %EMAILLOCALPART% (email address, part before @)<br />
* %EMAILDOMAIN% (email address, part after @)<br />
* %REALNAME% (needed?)<br />
* The key (surrounded by %) in <inputfield key=""> (see below)<br />
<br />
These placeholders can be used as value or value part in most settings which take a string.<br />
<br />
= User input fields =<br />
<br />
(not yet implemented, see [https://bugzilla.mozilla.org/show_bug.cgi?id=564043 bug 564043])<br />
<br />
For some ISPs, the IMPA/POP/SMTP username (and maybe other fields) has no relation to the email address and has to be entered separately. E.g. Email address is ben.bucksch@wong.com (chosen by user), but username is G675476 (provided by ISP).<br />
<br />
In this case, an <inputfield> can be added for the username. It will let the client show a textfield to the user. The user-visible label is the one provided in the <inputfield label=""> attribute, to allow the ISP to use custom terminology for "username". The label is not localizable, that would be too complicated and most ISPs are local anyways - if really important, the ISP config server can look at the HTTP headers during the fetch.<br />
<br />
The text that the user entered is written into a placeholder %KEY%, where KEY is the content of the <inputfield key="KEY"> attribute and must be only upper case letters. The placeholder can then be used in other settings, see [[#Placeholders]] above.<br />
<br />
For example, a config file entry<br />
<userinput label="Username" key="%USERNAME%">D123456</userinput><br />
would result in a UI like:<br />
Username: [ ] example: D123456<br />
and cound be used elsewhere in the config file like:<br />
<username>%USERNAME%</username><br />
and if the user enters "D32198", it would be automatically filled in like:<br />
<username>D32198</username><br />
i.e. using D32198 as username for IMAP, POP or SMTP.<br />
<br />
The system is generic, so that it can in theory be used for other values as well. No other such purpose is currently known, apart from a separate POP and SMTP username maybe. It should not be used to let the user supply hostnames, as that would defeat the purpose of the autoconfig and be worse than the manual config UI provided by the client.<br />
<br />
= OAuth2 =<br />
<br />
Due to a defficiency in the OAuth2 spec, the client is usually required to send a client credential key, which in turn requires the client to be registered and approved by the email provider. Unfortunately, this not only allows email providers to block specific email clients (which is contrary to the idea of Open-Source), but also makes it impossible to support arbitrary OAuth2 servers. That's why Thunderbird is forced to hardcode the servers that it supports and the respecive client keys. That means that you cannot use OAuth2 for your own server. Only the servers listed on [https://searchfox.org/comm-central/source/mailnews/base/src/OAuth2Providers.jsm OAuth2Providers.jsm] will work.<br />
<br />
A server using OAuth2 auth looks this:<br />
<pre><br />
<incomingServer type="imap"><br />
<hostname>imap.gmail.com</hostname><br />
<port>993</port><br />
<socketType>SSL</socketType><br />
<username>%EMAILADDRESS%</username><br />
<authentication>OAuth2</authentication><br />
<authentication>password-cleartext</authentication><br />
<oAuth2><br />
<issuer>login.yahoo.com<issuer><br />
<scope>mail-w<scope><br />
<authURL>https://api.login.yahoo.com/oauth2/request_auth</authURL><br />
<tokenURL>https://api.login.yahoo.com/oauth2/get_token</tokenURL><br />
<oAuth2><br />
</incomingServer><br />
</pre><br />
<br />
Note that the `<oAuth2>` contents are not yet supported by Thunderbird. They are planned to be supported later, removing the need to hardcode these parameters. As of today, `<authentication>OAuth2</authentication>` is supported.<br />
<br />
Note that there are two `<authentication>` elements. This allows a fallback, in case a client does not support OAuth2 or does not have a client key for this OAuth2 issuer and therefore cannot authenticate with this issuer.<br />
<br />
= TODO =<br />
<br />
* Values specific to IMAP, e.g. bug 558659 (special folders), bug 572465 (subfolders) etc.. However, most of these can and should be done as IMAP extensions.<br />
* All settings and enum values</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration:ConfigFileFormat&diff=1232895Thunderbird:Autoconfiguration:ConfigFileFormat2021-01-02T04:48:16Z<p>BenB: /* XML */ Comments</p>
<hr />
<div>Author: [[User:BenB|Ben Bucksch]]. Please do not change this doc without checking with the author.<br />
<br />
This page is the authorative specification of the config file that the Mozilla ISPDB and config services at ISPs return.<br />
<br />
It is XML, with a clearly defined format, to be stable and usable by other mail clients, too. Update Aug 2010: In fact, [http://projects.gnome.org/evolution/ Evolution] and [http://userbase.kde.org/KMail KMail] and [http://www.kontact.org Kontact] now use it, too.<br />
<br />
= Description =<br />
<br />
* [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Description of the different mechanisms to serve the configuration file]<br />
* [https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo How to create your own config file]<br />
<br />
= XML =<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<clientConfig version="1.1"><br />
<emailProvider id="example.com"><br />
<domain>example.com</domain><br />
<domain>example.net</domain><br />
<br />
<displayName>Google Mail</displayName><br />
<displayShortName>GMail</displayShortName><br />
<br />
<!-- type=<br />
"imap": IMAP<br />
"pop3": POP3<br />
--><br />
<incomingServer type="pop3"><br />
<hostname>pop.example.com</hostname><br />
<port>995</port><br />
<!-- "plain": no encryption<br />
"SSL": SSL 3 or TLS 1 on SSL-specific port<br />
"STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS<br />
--><br />
<socketType>SSL</socketType><br />
<username>%EMAILLOCALPART%</username><br />
<!-- Authentication methods:<br />
"password-cleartext",<br />
Send password in the clear<br />
(dangerous, if SSL isn't used either).<br />
AUTH PLAIN, LOGIN or protocol-native login.<br />
"password-encrypted",<br />
A secure encrypted password mechanism.<br />
Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.<br />
"NTLM":<br />
Use NTLM (or NTLMv2 or successors),<br />
the Windows login mechanism.<br />
"GSSAPI":<br />
Use Kerberos / GSSAPI,<br />
a single-signon mechanism used for big sites.<br />
"client-IP-address":<br />
The server recognizes this user based on the IP address.<br />
No authentication needed, the server will require no username nor password.<br />
"TLS-client-cert":<br />
On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)<br />
"OAuth2":<br />
OAuth2. Works only on specific hardcoded servers, please see below. Should be added only as second alternative.<br />
"none":<br />
No authentication<br />
--><br />
<authentication>password-cleartext</authentication><br />
<pop3><br />
<!-- remove the following and leave to client/user? --><br />
<leaveMessagesOnServer>true</leaveMessagesOnServer><br />
<downloadOnBiff>true</downloadOnBiff><br />
<daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer><br />
<!-- only for servers which don't allow checks more often --><br />
<checkInterval minutes="15"/><!-- not yet supported --><br />
</pop3><br />
<password>optional: the user's password</password><br />
</incomingServer><br />
<br />
<outgoingServer type="smtp"><br />
<hostname>smtp.googlemail.com</hostname><br />
<port>587</port><br />
<socketType>STARTTLS</socketType> <!-- see <incomingServer> --><br />
<username>%EMAILLOCALPART%</username> <!-- if smtp-auth --><br />
<!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.<br />
For values, see incoming.<br />
Additional options here:<br />
"SMTP-after-POP":<br />
authenticate to incoming mail server first<br />
before contacting the smtp server.<br />
Compatibility note: Thunderbird 3.0 accepts only "plain",<br />
"secure", "none", and "smtp-after-pop".<br />
It will ignore the whole XML file, if other values are given.<br />
--><br />
<authentication>password-cleartext</authentication><br />
<!-- If the server makes some additional requirements beyond<br />
<authentication>.<br />
"client-IP-address": The server is only reachable or works,<br />
if the user is in a certain IP network, e.g.<br />
the dialed into the ISP's network (DSL, cable, modem) or<br />
connected to a company network.<br />
Note: <authentication>client-IP-address</><br />
means that you may use the server without any auth.<br />
<authentication>password-cleartext</> *and*<br />
<restriction>client-IP-address</> means that you need to<br />
be in the correct IP network *and* (should) authenticate.<br />
Servers which do that are highly discouraged and<br />
should be avoided, see {{bug|556267}}.<br />
Not yet implemented. Spec (element name?) up to change.<br />
--><br />
<restriction>client-IP-address</restriction><br />
<!-- remove the following and leave to client/user? --><br />
<addThisServer>true</addThisServer><br />
<useGlobalPreferredServer>true</useGlobalPreferredServer><br />
<password>optional: the user's password</password><br />
</outgoingServer><br />
<br />
<!-- see description. Not yet supported, see bug 564043. --><br />
<inputField key="USERNAME" label="Screen name"></inputField><br />
<inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField><br />
<br />
<!-- Add this only when users (who already have an account) have to<br />
do something manually before the account can work with IMAP/POP or SSL.<br />
Note: Per XML, & (ampersand) needs to be escaped to & a m p ;<br />
(without spaces).<br />
Not yet implemented, see bug 586364. --><br />
<enable<br />
visiturl="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"><br />
<instruction>Check 'Enable IMAP and POP' in Google settings page</instruction><br />
<instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction><br />
</enable><br />
<br />
<!-- A page where the ISP describes the configuration.<br />
This is purely informational and currently mainly for<br />
maintenance of the files and not used by the client at all.<br />
Note that we do not necessarily use exactly the config suggested<br />
by the ISP, e.g. when they don't recommend SSL, but it's available,<br />
we will configure SSL.<br />
The text content should contains a description in the native<br />
language of the ISP (customers), and a short English description,<br />
mostly for us.<br />
--><br />
<documentation url="http://www.example.com/help/mail/thunderbird"><br />
<descr lang="en">Configure Thunderbird 2.0 for IMAP</descr><br />
<descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr><br />
</documentation><br />
<br />
</emailProvider><br />
<br />
<!-- Syncronize the user's address book / contacts. Not yet implemented. --><br />
<addressBook type="carddav"><br />
<username>%EMAILADDRESS%</username><br />
<!-- Authentication methods. See also <incomingServer>.<br />
"http-basic":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Basic<br />
"http-digest":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Digest<br />
"OAuth2":<br />
OAuth2. Uses the same token as for email.<br />
--><br />
<authentication>http-basic</authentication><br />
<serverURL>https://contacts.example.com/remote.php/dav<serverURL><br />
</addressBook><br />
<br />
<!-- Syncronize the user's calendar. Not yet implemented. --><br />
<calendar type="caldav"><br />
<username>%EMAILADDRESS%</username><br />
<authentication>http-basic</authentication> <!-- see <addressBook> --><br />
<serverURL>https://calendar.example.com/remote.php/dav<serverURL><br />
</calendar><br />
<br />
<!-- Upload files, allowing the user to share them. Not yet implemented.<br />
This can be used for Thunderbird's FileLink feature,<br />
or to set up a file sync folder on the user's desktop. --><br />
<fileShare type="webdav"><br />
<username>%EMAILADDRESS%</username><br />
<authentication>http-basic</authentication> <!-- see <addressBook> --><br />
<serverURL>https://share.example.com/remote.php/dav<serverURL><br />
</fileShare><br />
<br />
<!-- This allows to access the webmail service of the provider.<br />
The URLs are loaded into a standard webbrowser for the user.<br />
Specifying this is optional. --><br />
<webMail><br />
<!-- Webpage where the user has to log in manually by entering username<br />
and password himself.<br />
HTTPS required. --><br />
<loginPage url="https://mail.example.com/login/" /><br />
<br />
<!-- Same as loginAutomaticDOM, but the website makes checks that<br />
the user comes from the login page. So, open the login page<br />
in the browser, get the page's DOM, fill out name and password<br />
fields for the user, and trigger the login button.<br />
The login button might not be an HTML button, just a div, so<br />
to trigger it, send a click event to it.<br />
HTTPS is required for the URL. --><br />
<loginPageInfo url="https://mail.example.com/login/"><br />
<!-- What to fill into the usernameField.<br />
Format is the same as for <username> within <incomingServer>,<br />
including placeholders. See below for valid placeholders. --><br />
<username>%EMAILADDRESS%</username><br />
<!-- Allows to find the textfield on the page, to fill it out.<br />
The id attribute give the DOM ID,<br />
The name attribute give the DOM name attribute.<br />
One or both of id and name attributes must exist.<br />
Try the ID first (e.g. using getElementById()), if existing.<br />
Otherwise, try finding the element by name.<br />
Don't treat the IDs given in this XML file as trusted,<br />
but before using them, verify the format<br />
(e.g. only characters and digits for IDs).<br />
If you use powerful functions like jQuery, and the XML returns<br />
you code in the username ID, and you feed it unchecked to jQuery,<br />
it may be executed. --><br />
<usernameField id="email_field" name="email" /><br />
<passwordField name="password" /><br />
<!-- The submit button to trigger the server submit<br />
after filling in the fields.<br />
id and name attributes: See <usernameField> --><br />
<loginButton id="submit_button" name="login"/><br />
</loginPageInfo><br />
</webMail><br />
<br />
<clientConfigUpdate url="https://www.example.com/config/mozilla.xml" /><br />
<br />
</clientConfig><br />
</pre><br />
<br />
= Multiple servers =<br />
<br />
incomingServer and outgoingServer may appear several times. They are in order of priority, the first entry should generally be used, unless there's a specific factor or policy which prefers a later config.<br />
<br />
For example, there may be configs with STARTTLS and normal SSL. Use the first entry listed. If that fails (server config change), you can try the second config. If IMAP and POP3 servers both exist, then both should be listed; the client or end user can select the protocol which best suits its needs. The config/ISP can, however, express a preference for IMAP or POP3 by what is listed first in the config file.<br />
<br />
= Placeholders =<br />
<br />
The email address (before @ or with domain) that the user entered can be used as placeholder in the config file, so the file is the same for all users (i.e. static).<br />
<br />
Placeholders:<br />
* %EMAILADDRESS% (full email address of the user, usually entered by the user)<br />
* %EMAILLOCALPART% (email address, part before @)<br />
* %EMAILDOMAIN% (email address, part after @)<br />
* %REALNAME% (needed?)<br />
* The key (surrounded by %) in <inputfield key=""> (see below)<br />
<br />
These placeholders can be used as value or value part in most settings which take a string.<br />
<br />
= User input fields =<br />
<br />
(not yet implemented, see [https://bugzilla.mozilla.org/show_bug.cgi?id=564043 bug 564043])<br />
<br />
For some ISPs, the IMPA/POP/SMTP username (and maybe other fields) has no relation to the email address and has to be entered separately. E.g. Email address is ben.bucksch@wong.com (chosen by user), but username is G675476 (provided by ISP).<br />
<br />
In this case, an <inputfield> can be added for the username. It will let the client show a textfield to the user. The user-visible label is the one provided in the <inputfield label=""> attribute, to allow the ISP to use custom terminology for "username". The label is not localizable, that would be too complicated and most ISPs are local anyways - if really important, the ISP config server can look at the HTTP headers during the fetch.<br />
<br />
The text that the user entered is written into a placeholder %KEY%, where KEY is the content of the <inputfield key="KEY"> attribute and must be only upper case letters. The placeholder can then be used in other settings, see [[#Placeholders]] above.<br />
<br />
For example, a config file entry<br />
<userinput label="Username" key="%USERNAME%">D123456</userinput><br />
would result in a UI like:<br />
Username: [ ] example: D123456<br />
and cound be used elsewhere in the config file like:<br />
<username>%USERNAME%</username><br />
and if the user enters "D32198", it would be automatically filled in like:<br />
<username>D32198</username><br />
i.e. using D32198 as username for IMAP, POP or SMTP.<br />
<br />
The system is generic, so that it can in theory be used for other values as well. No other such purpose is currently known, apart from a separate POP and SMTP username maybe. It should not be used to let the user supply hostnames, as that would defeat the purpose of the autoconfig and be worse than the manual config UI provided by the client.<br />
<br />
= OAuth2 =<br />
<br />
Due to a defficiency in the OAuth2 spec, the client is usually required to send a client credential key, which in turn requires the client to be registered and approved by the email provider. Unfortunately, this not only allows email providers to block specific email clients (which is contrary to the idea of Open-Source), but also makes it impossible to support arbitrary OAuth2 servers. That's why Thunderbird is forced to hardcode the servers that it supports and the respecive client keys. That means that you cannot use OAuth2 for your own server. Only the servers listed on [https://searchfox.org/comm-central/source/mailnews/base/src/OAuth2Providers.jsm OAuth2Providers.jsm] will work.<br />
<br />
A server using OAuth2 auth looks this:<br />
<pre><br />
<incomingServer type="imap"><br />
<hostname>imap.gmail.com</hostname><br />
<port>993</port><br />
<socketType>SSL</socketType><br />
<username>%EMAILADDRESS%</username><br />
<authentication>OAuth2</authentication><br />
<authentication>password-cleartext</authentication><br />
<oAuth2><br />
<issuer>login.yahoo.com<issuer><br />
<scope>mail-w<scope><br />
<authURL>https://api.login.yahoo.com/oauth2/request_auth</authURL><br />
<tokenURL>https://api.login.yahoo.com/oauth2/get_token</tokenURL><br />
<oAuth2><br />
</incomingServer><br />
</pre><br />
<br />
Note that the `<oAuth2>` contents are not yet supported by Thunderbird. They are planned to be supported later, removing the need to hardcode these parameters. As of today, `<authentication>OAuth2</authentication>` is supported.<br />
<br />
Note that there are two `<authentication>` elements. This allows a fallback, in case a client does not support OAuth2 or does not have a client key for this OAuth2 issuer and therefore cannot authenticate with this issuer.<br />
<br />
= TODO =<br />
<br />
* Values specific to IMAP, e.g. bug 558659 (special folders), bug 572465 (subfolders) etc.. However, most of these can and should be done as IMAP extensions.<br />
* All settings and enum values</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration:ConfigFileFormat&diff=1232894Thunderbird:Autoconfiguration:ConfigFileFormat2021-01-02T04:45:55Z<p>BenB: /* addressBook */ Typo</p>
<hr />
<div>Author: [[User:BenB|Ben Bucksch]]. Please do not change this doc without checking with the author.<br />
<br />
This page is the authorative specification of the config file that the Mozilla ISPDB and config services at ISPs return.<br />
<br />
It is XML, with a clearly defined format, to be stable and usable by other mail clients, too. Update Aug 2010: In fact, [http://projects.gnome.org/evolution/ Evolution] and [http://userbase.kde.org/KMail KMail] and [http://www.kontact.org Kontact] now use it, too.<br />
<br />
= Description =<br />
<br />
* [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Description of the different mechanisms to serve the configuration file]<br />
* [https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo How to create your own config file]<br />
<br />
= XML =<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<clientConfig version="1.1"><br />
<emailProvider id="example.com"><br />
<domain>example.com</domain><br />
<domain>example.net</domain><br />
<br />
<displayName>Google Mail</displayName><br />
<displayShortName>GMail</displayShortName><br />
<br />
<!-- type=<br />
"imap": IMAP<br />
"pop3": POP3<br />
--><br />
<incomingServer type="pop3"><br />
<hostname>pop.example.com</hostname><br />
<port>995</port><br />
<socketType>SSL</socketType><br />
<!-- "plain": no encryption<br />
"SSL": SSL 3 or TLS 1 on SSL-specific port<br />
"STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS<br />
--><br />
<username>%EMAILLOCALPART%</username><br />
<!-- Authentication methods:<br />
"password-cleartext",<br />
Send password in the clear<br />
(dangerous, if SSL isn't used either).<br />
AUTH PLAIN, LOGIN or protocol-native login.<br />
"password-encrypted",<br />
A secure encrypted password mechanism.<br />
Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.<br />
"NTLM":<br />
Use NTLM (or NTLMv2 or successors),<br />
the Windows login mechanism.<br />
"GSSAPI":<br />
Use Kerberos / GSSAPI,<br />
a single-signon mechanism used for big sites.<br />
"client-IP-address":<br />
The server recognizes this user based on the IP address.<br />
No authentication needed, the server will require no username nor password.<br />
"TLS-client-cert":<br />
On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)<br />
"OAuth2":<br />
OAuth2. Works only on specific hardcoded servers, please see below. Should be added only as second alternative.<br />
"none":<br />
No authentication<br />
--><br />
<authentication>password-cleartext</authentication><br />
<pop3><br />
<!-- remove the following and leave to client/user? --><br />
<leaveMessagesOnServer>true</leaveMessagesOnServer><br />
<downloadOnBiff>true</downloadOnBiff><br />
<daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer><br />
<!-- only for servers which don't allow checks more often --><br />
<checkInterval minutes="15"/><!-- not yet supported --><br />
</pop3><br />
<password>optional: the user's password</password><br />
</incomingServer><br />
<br />
<outgoingServer type="smtp"><br />
<hostname>smtp.googlemail.com</hostname><br />
<port>587</port><br />
<socketType>STARTTLS</socketType> <!-- see above --><br />
<username>%EMAILLOCALPART%</username> <!-- if smtp-auth --><br />
<!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.<br />
For values, see incoming.<br />
Additional options here:<br />
"SMTP-after-POP":<br />
authenticate to incoming mail server first<br />
before contacting the smtp server.<br />
Compatibility note: Thunderbird 3.0 accepts only "plain",<br />
"secure", "none", and "smtp-after-pop".<br />
It will ignore the whole XML file, if other values are given.<br />
--><br />
<authentication>password-cleartext</authentication><br />
<!-- If the server makes some additional requirements beyond<br />
<authentication>.<br />
"client-IP-address": The server is only reachable or works,<br />
if the user is in a certain IP network, e.g.<br />
the dialed into the ISP's network (DSL, cable, modem) or<br />
connected to a company network.<br />
Note: <authentication>client-IP-address</><br />
means that you may use the server without any auth.<br />
<authentication>password-cleartext</> *and*<br />
<restriction>client-IP-address</> means that you need to<br />
be in the correct IP network *and* (should) authenticate.<br />
Servers which do that are highly discouraged and<br />
should be avoided, see {{bug|556267}}.<br />
Not yet implemented. Spec (element name?) up to change.<br />
--><br />
<restriction>client-IP-address</restriction><br />
<!-- remove the following and leave to client/user? --><br />
<addThisServer>true</addThisServer><br />
<useGlobalPreferredServer>true</useGlobalPreferredServer><br />
<password>optional: the user's password</password><br />
</outgoingServer><br />
<br />
<identity><br />
<!-- needed? --><br />
<!-- We don't want Verizon setting "Organization: Verizon"<br />
for its customers --><br />
</identity><br />
<br />
<!-- see description. Not yet supported, see bug 564043. --><br />
<inputField key="USERNAME" label="Screen name"></inputField><br />
<inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField><br />
<br />
<!-- Add this only when users (who already have an account) have to<br />
do something manually before the account can work with IMAP/POP or SSL.<br />
Note: Per XML, & (ampersand) needs to be escaped to & a m p ;<br />
(without spaces).<br />
Not yet implemented, see bug 586364. --><br />
<enable<br />
visiturl="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"><br />
<instruction>Check 'Enable IMAP and POP' in Google settings page</instruction><br />
<instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction><br />
</enable><br />
<br />
<!-- A page where the ISP describes the configuration.<br />
This is purely informational and currently mainly for<br />
maintenance of the files and not used by the client at all.<br />
Note that we do not necessarily use exactly the config suggested<br />
by the ISP, e.g. when they don't recommend SSL, but it's available,<br />
we will configure SSL.<br />
The text content should contains a description in the native<br />
language of the ISP (customers), and a short English description,<br />
mostly for us.<br />
--><br />
<documentation url="http://www.example.com/help/mail/thunderbird"><br />
<descr lang="en">Configure Thunderbird 2.0 for IMAP</descr><br />
<descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr><br />
</documentation><br />
<br />
</emailProvider><br />
<br />
<!-- Syncronize the user's address book / contacts. Not yet implemented. --><br />
<addressBook type="carddav"><br />
<username>%EMAILADDRESS%</username> <!-- see <incomingServer> --><br />
<!-- Authentication methods. See also <incomingServer>.<br />
"http-basic":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Basic<br />
"http-digest":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Digest<br />
"OAuth2":<br />
OAuth2. Uses the same token as for email.<br />
--><br />
<authentication>http-basic</authentication><br />
<serverURL>https://contacts.example.com/remote.php/dav<serverURL><br />
</addressBook><br />
<br />
<!-- Syncronize the user's calendar. Not yet implemented. --><br />
<calendar type="caldav"><br />
<username>%EMAILADDRESS%</username> <!-- see <incomingServer> --><br />
<authentication>http-basic</authentication> <!-- see <addressBook> --><br />
<serverURL>https://calendar.example.com/remote.php/dav<serverURL><br />
</calendar><br />
<br />
<!-- Upload files, allowing the user to share them. Not yet implemented.<br />
This can be used for Thunderbird's FileLink feature,<br />
or to set up a file sync folder on the user's desktop. --><br />
<fileShare type="webdav"><br />
<username>%EMAILADDRESS%</username> <!-- see <incomingServer> --><br />
<authentication>http-basic</authentication> <!-- see <addressBook> --><br />
<serverURL>https://share.example.com/remote.php/dav<serverURL><br />
</fileShare><br />
<br />
<!-- This allows to access the webmail service of the provider.<br />
The URLs are loaded into a standard webbrowser for the user.<br />
Specifying this is optional. --><br />
<webMail><br />
<!-- Webpage where the user has to log in manually by entering username<br />
and password himself.<br />
HTTPS required. --><br />
<loginPage url="https://mail.example.com/login/" /><br />
<br />
<!-- Same as loginAutomaticDOM, but the website makes checks that<br />
the user comes from the login page. So, open the login page<br />
in the browser, get the page's DOM, fill out name and password<br />
fields for the user, and trigger the login button.<br />
The login button might not be an HTML button, just a div, so<br />
to trigger it, send a click event to it.<br />
HTTPS is required for the URL. --><br />
<loginPageInfo url="https://mail.example.com/login/"><br />
<!-- What to fill into the usernameField.<br />
Format is the same as for <username> within <incomingServer>,<br />
including placeholders. See below for valid placeholders. --><br />
<username>%EMAILADDRESS%</username><br />
<!-- Allows to find the textfield on the page, to fill it out.<br />
The id attribute give the DOM ID,<br />
The name attribute give the DOM name attribute.<br />
One or both of id and name attributes must exist.<br />
Try the ID first (e.g. using getElementById()), if existing.<br />
Otherwise, try finding the element by name.<br />
Don't treat the IDs given in this XML file as trusted,<br />
but before using them, verify the format<br />
(e.g. only characters and digits for IDs).<br />
If you use powerful functions like jQuery, and the XML returns<br />
you code in the username ID, and you feed it unchecked to jQuery,<br />
it may be executed. --><br />
<usernameField id="email_field" name="email" /><br />
<passwordField name="password" /><br />
<!-- The submit button to trigger the server submit<br />
after filling in the fields.<br />
id and name attributes: See <usernameField> --><br />
<loginButton id="submit_button" name="login"/><br />
</loginPageInfo><br />
</webMail><br />
<br />
<clientConfigUpdate url="https://www.example.com/config/mozilla.xml" /><br />
<br />
</clientConfig><br />
</pre><br />
<br />
= Multiple servers =<br />
<br />
incomingServer and outgoingServer may appear several times. They are in order of priority, the first entry should generally be used, unless there's a specific factor or policy which prefers a later config.<br />
<br />
For example, there may be configs with STARTTLS and normal SSL. Use the first entry listed. If that fails (server config change), you can try the second config. If IMAP and POP3 servers both exist, then both should be listed; the client or end user can select the protocol which best suits its needs. The config/ISP can, however, express a preference for IMAP or POP3 by what is listed first in the config file.<br />
<br />
= Placeholders =<br />
<br />
The email address (before @ or with domain) that the user entered can be used as placeholder in the config file, so the file is the same for all users (i.e. static).<br />
<br />
Placeholders:<br />
* %EMAILADDRESS% (full email address of the user, usually entered by the user)<br />
* %EMAILLOCALPART% (email address, part before @)<br />
* %EMAILDOMAIN% (email address, part after @)<br />
* %REALNAME% (needed?)<br />
* The key (surrounded by %) in <inputfield key=""> (see below)<br />
<br />
These placeholders can be used as value or value part in most settings which take a string.<br />
<br />
= User input fields =<br />
<br />
(not yet implemented, see [https://bugzilla.mozilla.org/show_bug.cgi?id=564043 bug 564043])<br />
<br />
For some ISPs, the IMPA/POP/SMTP username (and maybe other fields) has no relation to the email address and has to be entered separately. E.g. Email address is ben.bucksch@wong.com (chosen by user), but username is G675476 (provided by ISP).<br />
<br />
In this case, an <inputfield> can be added for the username. It will let the client show a textfield to the user. The user-visible label is the one provided in the <inputfield label=""> attribute, to allow the ISP to use custom terminology for "username". The label is not localizable, that would be too complicated and most ISPs are local anyways - if really important, the ISP config server can look at the HTTP headers during the fetch.<br />
<br />
The text that the user entered is written into a placeholder %KEY%, where KEY is the content of the <inputfield key="KEY"> attribute and must be only upper case letters. The placeholder can then be used in other settings, see [[#Placeholders]] above.<br />
<br />
For example, a config file entry<br />
<userinput label="Username" key="%USERNAME%">D123456</userinput><br />
would result in a UI like:<br />
Username: [ ] example: D123456<br />
and cound be used elsewhere in the config file like:<br />
<username>%USERNAME%</username><br />
and if the user enters "D32198", it would be automatically filled in like:<br />
<username>D32198</username><br />
i.e. using D32198 as username for IMAP, POP or SMTP.<br />
<br />
The system is generic, so that it can in theory be used for other values as well. No other such purpose is currently known, apart from a separate POP and SMTP username maybe. It should not be used to let the user supply hostnames, as that would defeat the purpose of the autoconfig and be worse than the manual config UI provided by the client.<br />
<br />
= OAuth2 =<br />
<br />
Due to a defficiency in the OAuth2 spec, the client is usually required to send a client credential key, which in turn requires the client to be registered and approved by the email provider. Unfortunately, this not only allows email providers to block specific email clients (which is contrary to the idea of Open-Source), but also makes it impossible to support arbitrary OAuth2 servers. That's why Thunderbird is forced to hardcode the servers that it supports and the respecive client keys. That means that you cannot use OAuth2 for your own server. Only the servers listed on [https://searchfox.org/comm-central/source/mailnews/base/src/OAuth2Providers.jsm OAuth2Providers.jsm] will work.<br />
<br />
A server using OAuth2 auth looks this:<br />
<pre><br />
<incomingServer type="imap"><br />
<hostname>imap.gmail.com</hostname><br />
<port>993</port><br />
<socketType>SSL</socketType><br />
<username>%EMAILADDRESS%</username><br />
<authentication>OAuth2</authentication><br />
<authentication>password-cleartext</authentication><br />
<oAuth2><br />
<issuer>login.yahoo.com<issuer><br />
<scope>mail-w<scope><br />
<authURL>https://api.login.yahoo.com/oauth2/request_auth</authURL><br />
<tokenURL>https://api.login.yahoo.com/oauth2/get_token</tokenURL><br />
<oAuth2><br />
</incomingServer><br />
</pre><br />
<br />
Note that the `<oAuth2>` contents are not yet supported by Thunderbird. They are planned to be supported later, removing the need to hardcode these parameters. As of today, `<authentication>OAuth2</authentication>` is supported.<br />
<br />
Note that there are two `<authentication>` elements. This allows a fallback, in case a client does not support OAuth2 or does not have a client key for this OAuth2 issuer and therefore cannot authenticate with this issuer.<br />
<br />
= TODO =<br />
<br />
* Values specific to IMAP, e.g. bug 558659 (special folders), bug 572465 (subfolders) etc.. However, most of these can and should be done as IMAP extensions.<br />
* All settings and enum values</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration:ConfigFileFormat&diff=1232893Thunderbird:Autoconfiguration:ConfigFileFormat2021-01-02T04:12:12Z<p>BenB: /* XML */ Typo</p>
<hr />
<div>Author: [[User:BenB|Ben Bucksch]]. Please do not change this doc without checking with the author.<br />
<br />
This page is the authorative specification of the config file that the Mozilla ISPDB and config services at ISPs return.<br />
<br />
It is XML, with a clearly defined format, to be stable and usable by other mail clients, too. Update Aug 2010: In fact, [http://projects.gnome.org/evolution/ Evolution] and [http://userbase.kde.org/KMail KMail] and [http://www.kontact.org Kontact] now use it, too.<br />
<br />
= Description =<br />
<br />
* [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Description of the different mechanisms to serve the configuration file]<br />
* [https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo How to create your own config file]<br />
<br />
= XML =<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<clientConfig version="1.1"><br />
<emailProvider id="example.com"><br />
<domain>example.com</domain><br />
<domain>example.net</domain><br />
<br />
<displayName>Google Mail</displayName><br />
<displayShortName>GMail</displayShortName><br />
<br />
<!-- type=<br />
"imap": IMAP<br />
"pop3": POP3<br />
--><br />
<incomingServer type="pop3"><br />
<hostname>pop.example.com</hostname><br />
<port>995</port><br />
<socketType>SSL</socketType><br />
<!-- "plain": no encryption<br />
"SSL": SSL 3 or TLS 1 on SSL-specific port<br />
"STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS<br />
--><br />
<username>%EMAILLOCALPART%</username><br />
<!-- Authentication methods:<br />
"password-cleartext",<br />
Send password in the clear<br />
(dangerous, if SSL isn't used either).<br />
AUTH PLAIN, LOGIN or protocol-native login.<br />
"password-encrypted",<br />
A secure encrypted password mechanism.<br />
Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.<br />
"NTLM":<br />
Use NTLM (or NTLMv2 or successors),<br />
the Windows login mechanism.<br />
"GSSAPI":<br />
Use Kerberos / GSSAPI,<br />
a single-signon mechanism used for big sites.<br />
"client-IP-address":<br />
The server recognizes this user based on the IP address.<br />
No authentication needed, the server will require no username nor password.<br />
"TLS-client-cert":<br />
On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)<br />
"OAuth2":<br />
OAuth2. Works only on specific hardcoded servers, please see below. Should be added only as second alternative.<br />
"none":<br />
No authentication<br />
--><br />
<authentication>password-cleartext</authentication><br />
<pop3><br />
<!-- remove the following and leave to client/user? --><br />
<leaveMessagesOnServer>true</leaveMessagesOnServer><br />
<downloadOnBiff>true</downloadOnBiff><br />
<daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer><br />
<!-- only for servers which don't allow checks more often --><br />
<checkInterval minutes="15"/><!-- not yet supported --><br />
</pop3><br />
<password>optional: the user's password</password><br />
</incomingServer><br />
<br />
<outgoingServer type="smtp"><br />
<hostname>smtp.googlemail.com</hostname><br />
<port>587</port><br />
<socketType>STARTTLS</socketType> <!-- see above --><br />
<username>%EMAILLOCALPART%</username> <!-- if smtp-auth --><br />
<!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.<br />
For values, see incoming.<br />
Additional options here:<br />
"SMTP-after-POP":<br />
authenticate to incoming mail server first<br />
before contacting the smtp server.<br />
Compatibility note: Thunderbird 3.0 accepts only "plain",<br />
"secure", "none", and "smtp-after-pop".<br />
It will ignore the whole XML file, if other values are given.<br />
--><br />
<authentication>password-cleartext</authentication><br />
<!-- If the server makes some additional requirements beyond<br />
<authentication>.<br />
"client-IP-address": The server is only reachable or works,<br />
if the user is in a certain IP network, e.g.<br />
the dialed into the ISP's network (DSL, cable, modem) or<br />
connected to a company network.<br />
Note: <authentication>client-IP-address</><br />
means that you may use the server without any auth.<br />
<authentication>password-cleartext</> *and*<br />
<restriction>client-IP-address</> means that you need to<br />
be in the correct IP network *and* (should) authenticate.<br />
Servers which do that are highly discouraged and<br />
should be avoided, see {{bug|556267}}.<br />
Not yet implemented. Spec (element name?) up to change.<br />
--><br />
<restriction>client-IP-address</restriction><br />
<!-- remove the following and leave to client/user? --><br />
<addThisServer>true</addThisServer><br />
<useGlobalPreferredServer>true</useGlobalPreferredServer><br />
<password>optional: the user's password</password><br />
</outgoingServer><br />
<br />
<identity><br />
<!-- needed? --><br />
<!-- We don't want Verizon setting "Organization: Verizon"<br />
for its customers --><br />
</identity><br />
<br />
<!-- see description. Not yet supported, see bug 564043. --><br />
<inputField key="USERNAME" label="Screen name"></inputField><br />
<inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField><br />
<br />
<!-- Add this only when users (who already have an account) have to<br />
do something manually before the account can work with IMAP/POP or SSL.<br />
Note: Per XML, & (ampersand) needs to be escaped to & a m p ;<br />
(without spaces).<br />
Not yet implemented, see bug 586364. --><br />
<enable<br />
visiturl="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"><br />
<instruction>Check 'Enable IMAP and POP' in Google settings page</instruction><br />
<instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction><br />
</enable><br />
<br />
<!-- A page where the ISP describes the configuration.<br />
This is purely informational and currently mainly for<br />
maintenance of the files and not used by the client at all.<br />
Note that we do not necessarily use exactly the config suggested<br />
by the ISP, e.g. when they don't recommend SSL, but it's available,<br />
we will configure SSL.<br />
The text content should contains a description in the native<br />
language of the ISP (customers), and a short English description,<br />
mostly for us.<br />
--><br />
<documentation url="http://www.example.com/help/mail/thunderbird"><br />
<descr lang="en">Configure Thunderbird 2.0 for IMAP</descr><br />
<descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr><br />
</documentation><br />
<br />
</emailProvider><br />
<br />
<!-- Syncronize the user's address book / contacts. Not yet implemented. --><br />
<addressbook type="carddav"><br />
<username>%EMAILADDRESS%</username> <!-- see <incomingServer> --><br />
<!-- Authentication methods. See also <incomingServer>.<br />
"http-basic":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Basic<br />
"http-digest":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Digest<br />
"OAuth2":<br />
OAuth2. Uses the same token as for email.<br />
--><br />
<authentication>http-basic</authentication><br />
<serverURL>https://contacts.example.com/remote.php/dav<serverURL><br />
</addressbook><br />
<br />
<!-- Syncronize the user's calendar. Not yet implemented. --><br />
<calendar type="caldav"><br />
<username>%EMAILADDRESS%</username> <!-- see <incomingServer> --><br />
<authentication>http-basic</authentication> <!-- see <addressbook> --><br />
<serverURL>https://calendar.example.com/remote.php/dav<serverURL><br />
</calendar><br />
<br />
<!-- Upload files, allowing the user to share them. Not yet implemented.<br />
This can be used for Thunderbird's FileLink feature,<br />
or to set up a file sync folder on the user's desktop. --><br />
<fileShare type="webdav"><br />
<username>%EMAILADDRESS%</username> <!-- see <incomingServer> --><br />
<authentication>http-basic</authentication> <!-- see <addressbook> --><br />
<serverURL>https://share.example.com/remote.php/dav<serverURL><br />
</fileShare><br />
<br />
<!-- This allows to access the webmail service of the provider.<br />
The URLs are loaded into a standard webbrowser for the user.<br />
Specifying this is optional. --><br />
<webMail><br />
<!-- Webpage where the user has to log in manually by entering username<br />
and password himself.<br />
HTTPS required. --><br />
<loginPage url="https://mail.example.com/login/" /><br />
<br />
<!-- Same as loginAutomaticDOM, but the website makes checks that<br />
the user comes from the login page. So, open the login page<br />
in the browser, get the page's DOM, fill out name and password<br />
fields for the user, and trigger the login button.<br />
The login button might not be an HTML button, just a div, so<br />
to trigger it, send a click event to it.<br />
HTTPS is required for the URL. --><br />
<loginPageInfo url="https://mail.example.com/login/"><br />
<!-- What to fill into the usernameField.<br />
Format is the same as for <username> within <incomingServer>,<br />
including placeholders. See below for valid placeholders. --><br />
<username>%EMAILADDRESS%</username><br />
<!-- Allows to find the textfield on the page, to fill it out.<br />
The id attribute give the DOM ID,<br />
The name attribute give the DOM name attribute.<br />
One or both of id and name attributes must exist.<br />
Try the ID first (e.g. using getElementById()), if existing.<br />
Otherwise, try finding the element by name.<br />
Don't treat the IDs given in this XML file as trusted,<br />
but before using them, verify the format<br />
(e.g. only characters and digits for IDs).<br />
If you use powerful functions like jQuery, and the XML returns<br />
you code in the username ID, and you feed it unchecked to jQuery,<br />
it may be executed. --><br />
<usernameField id="email_field" name="email" /><br />
<passwordField name="password" /><br />
<!-- The submit button to trigger the server submit<br />
after filling in the fields.<br />
id and name attributes: See <usernameField> --><br />
<loginButton id="submit_button" name="login"/><br />
</loginPageInfo><br />
</webMail><br />
<br />
<clientConfigUpdate url="https://www.example.com/config/mozilla.xml" /><br />
<br />
</clientConfig><br />
</pre><br />
<br />
= Multiple servers =<br />
<br />
incomingServer and outgoingServer may appear several times. They are in order of priority, the first entry should generally be used, unless there's a specific factor or policy which prefers a later config.<br />
<br />
For example, there may be configs with STARTTLS and normal SSL. Use the first entry listed. If that fails (server config change), you can try the second config. If IMAP and POP3 servers both exist, then both should be listed; the client or end user can select the protocol which best suits its needs. The config/ISP can, however, express a preference for IMAP or POP3 by what is listed first in the config file.<br />
<br />
= Placeholders =<br />
<br />
The email address (before @ or with domain) that the user entered can be used as placeholder in the config file, so the file is the same for all users (i.e. static).<br />
<br />
Placeholders:<br />
* %EMAILADDRESS% (full email address of the user, usually entered by the user)<br />
* %EMAILLOCALPART% (email address, part before @)<br />
* %EMAILDOMAIN% (email address, part after @)<br />
* %REALNAME% (needed?)<br />
* The key (surrounded by %) in <inputfield key=""> (see below)<br />
<br />
These placeholders can be used as value or value part in most settings which take a string.<br />
<br />
= User input fields =<br />
<br />
(not yet implemented, see [https://bugzilla.mozilla.org/show_bug.cgi?id=564043 bug 564043])<br />
<br />
For some ISPs, the IMPA/POP/SMTP username (and maybe other fields) has no relation to the email address and has to be entered separately. E.g. Email address is ben.bucksch@wong.com (chosen by user), but username is G675476 (provided by ISP).<br />
<br />
In this case, an <inputfield> can be added for the username. It will let the client show a textfield to the user. The user-visible label is the one provided in the <inputfield label=""> attribute, to allow the ISP to use custom terminology for "username". The label is not localizable, that would be too complicated and most ISPs are local anyways - if really important, the ISP config server can look at the HTTP headers during the fetch.<br />
<br />
The text that the user entered is written into a placeholder %KEY%, where KEY is the content of the <inputfield key="KEY"> attribute and must be only upper case letters. The placeholder can then be used in other settings, see [[#Placeholders]] above.<br />
<br />
For example, a config file entry<br />
<userinput label="Username" key="%USERNAME%">D123456</userinput><br />
would result in a UI like:<br />
Username: [ ] example: D123456<br />
and cound be used elsewhere in the config file like:<br />
<username>%USERNAME%</username><br />
and if the user enters "D32198", it would be automatically filled in like:<br />
<username>D32198</username><br />
i.e. using D32198 as username for IMAP, POP or SMTP.<br />
<br />
The system is generic, so that it can in theory be used for other values as well. No other such purpose is currently known, apart from a separate POP and SMTP username maybe. It should not be used to let the user supply hostnames, as that would defeat the purpose of the autoconfig and be worse than the manual config UI provided by the client.<br />
<br />
= OAuth2 =<br />
<br />
Due to a defficiency in the OAuth2 spec, the client is usually required to send a client credential key, which in turn requires the client to be registered and approved by the email provider. Unfortunately, this not only allows email providers to block specific email clients (which is contrary to the idea of Open-Source), but also makes it impossible to support arbitrary OAuth2 servers. That's why Thunderbird is forced to hardcode the servers that it supports and the respecive client keys. That means that you cannot use OAuth2 for your own server. Only the servers listed on [https://searchfox.org/comm-central/source/mailnews/base/src/OAuth2Providers.jsm OAuth2Providers.jsm] will work.<br />
<br />
A server using OAuth2 auth looks this:<br />
<pre><br />
<incomingServer type="imap"><br />
<hostname>imap.gmail.com</hostname><br />
<port>993</port><br />
<socketType>SSL</socketType><br />
<username>%EMAILADDRESS%</username><br />
<authentication>OAuth2</authentication><br />
<authentication>password-cleartext</authentication><br />
<oAuth2><br />
<issuer>login.yahoo.com<issuer><br />
<scope>mail-w<scope><br />
<authURL>https://api.login.yahoo.com/oauth2/request_auth</authURL><br />
<tokenURL>https://api.login.yahoo.com/oauth2/get_token</tokenURL><br />
<oAuth2><br />
</incomingServer><br />
</pre><br />
<br />
Note that the `<oAuth2>` contents are not yet supported by Thunderbird. They are planned to be supported later, removing the need to hardcode these parameters. As of today, `<authentication>OAuth2</authentication>` is supported.<br />
<br />
Note that there are two `<authentication>` elements. This allows a fallback, in case a client does not support OAuth2 or does not have a client key for this OAuth2 issuer and therefore cannot authenticate with this issuer.<br />
<br />
= TODO =<br />
<br />
* Values specific to IMAP, e.g. bug 558659 (special folders), bug 572465 (subfolders) etc.. However, most of these can and should be done as IMAP extensions.<br />
* All settings and enum values</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration:ConfigFileFormat&diff=1232892Thunderbird:Autoconfiguration:ConfigFileFormat2021-01-02T04:11:39Z<p>BenB: /* XML */ Spec for WebDAV</p>
<hr />
<div>Author: [[User:BenB|Ben Bucksch]]. Please do not change this doc without checking with the author.<br />
<br />
This page is the authorative specification of the config file that the Mozilla ISPDB and config services at ISPs return.<br />
<br />
It is XML, with a clearly defined format, to be stable and usable by other mail clients, too. Update Aug 2010: In fact, [http://projects.gnome.org/evolution/ Evolution] and [http://userbase.kde.org/KMail KMail] and [http://www.kontact.org Kontact] now use it, too.<br />
<br />
= Description =<br />
<br />
* [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Description of the different mechanisms to serve the configuration file]<br />
* [https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo How to create your own config file]<br />
<br />
= XML =<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<clientConfig version="1.1"><br />
<emailProvider id="example.com"><br />
<domain>example.com</domain><br />
<domain>example.net</domain><br />
<br />
<displayName>Google Mail</displayName><br />
<displayShortName>GMail</displayShortName><br />
<br />
<!-- type=<br />
"imap": IMAP<br />
"pop3": POP3<br />
--><br />
<incomingServer type="pop3"><br />
<hostname>pop.example.com</hostname><br />
<port>995</port><br />
<socketType>SSL</socketType><br />
<!-- "plain": no encryption<br />
"SSL": SSL 3 or TLS 1 on SSL-specific port<br />
"STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS<br />
--><br />
<username>%EMAILLOCALPART%</username><br />
<!-- Authentication methods:<br />
"password-cleartext",<br />
Send password in the clear<br />
(dangerous, if SSL isn't used either).<br />
AUTH PLAIN, LOGIN or protocol-native login.<br />
"password-encrypted",<br />
A secure encrypted password mechanism.<br />
Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.<br />
"NTLM":<br />
Use NTLM (or NTLMv2 or successors),<br />
the Windows login mechanism.<br />
"GSSAPI":<br />
Use Kerberos / GSSAPI,<br />
a single-signon mechanism used for big sites.<br />
"client-IP-address":<br />
The server recognizes this user based on the IP address.<br />
No authentication needed, the server will require no username nor password.<br />
"TLS-client-cert":<br />
On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)<br />
"OAuth2":<br />
OAuth2. Works only on specific hardcoded servers, please see below. Should be added only as second alternative.<br />
"none":<br />
No authentication<br />
--><br />
<authentication>password-cleartext</authentication><br />
<pop3><br />
<!-- remove the following and leave to client/user? --><br />
<leaveMessagesOnServer>true</leaveMessagesOnServer><br />
<downloadOnBiff>true</downloadOnBiff><br />
<daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer><br />
<!-- only for servers which don't allow checks more often --><br />
<checkInterval minutes="15"/><!-- not yet supported --><br />
</pop3><br />
<password>optional: the user's password</password><br />
</incomingServer><br />
<br />
<outgoingServer type="smtp"><br />
<hostname>smtp.googlemail.com</hostname><br />
<port>587</port><br />
<socketType>STARTTLS</socketType> <!-- see above --><br />
<username>%EMAILLOCALPART%</username> <!-- if smtp-auth --><br />
<!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.<br />
For values, see incoming.<br />
Additional options here:<br />
"SMTP-after-POP":<br />
authenticate to incoming mail server first<br />
before contacting the smtp server.<br />
Compatibility note: Thunderbird 3.0 accepts only "plain",<br />
"secure", "none", and "smtp-after-pop".<br />
It will ignore the whole XML file, if other values are given.<br />
--><br />
<authentication>password-cleartext</authentication><br />
<!-- If the server makes some additional requirements beyond<br />
<authentication>.<br />
"client-IP-address": The server is only reachable or works,<br />
if the user is in a certain IP network, e.g.<br />
the dialed into the ISP's network (DSL, cable, modem) or<br />
connected to a company network.<br />
Note: <authentication>client-IP-address</><br />
means that you may use the server without any auth.<br />
<authentication>password-cleartext</> *and*<br />
<restriction>client-IP-address</> means that you need to<br />
be in the correct IP network *and* (should) authenticate.<br />
Servers which do that are highly discouraged and<br />
should be avoided, see {{bug|556267}}.<br />
Not yet implemented. Spec (element name?) up to change.<br />
--><br />
<restriction>client-IP-address</restriction><br />
<!-- remove the following and leave to client/user? --><br />
<addThisServer>true</addThisServer><br />
<useGlobalPreferredServer>true</useGlobalPreferredServer><br />
<password>optional: the user's password</password><br />
</outgoingServer><br />
<br />
<identity><br />
<!-- needed? --><br />
<!-- We don't want Verizon setting "Organization: Verizon"<br />
for its customers --><br />
</identity><br />
<br />
<!-- see description. Not yet supported, see bug 564043. --><br />
<inputField key="USERNAME" label="Screen name"></inputField><br />
<inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField><br />
<br />
<!-- Add this only when users (who already have an account) have to<br />
do something manually before the account can work with IMAP/POP or SSL.<br />
Note: Per XML, & (ampersand) needs to be escaped to & a m p ;<br />
(without spaces).<br />
Not yet implemented, see bug 586364. --><br />
<enable<br />
visiturl="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"><br />
<instruction>Check 'Enable IMAP and POP' in Google settings page</instruction><br />
<instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction><br />
</enable><br />
<br />
<!-- A page where the ISP describes the configuration.<br />
This is purely informational and currently mainly for<br />
maintenance of the files and not used by the client at all.<br />
Note that we do not necessarily use exactly the config suggested<br />
by the ISP, e.g. when they don't recommend SSL, but it's available,<br />
we will configure SSL.<br />
The text content should contains a description in the native<br />
language of the ISP (customers), and a short English description,<br />
mostly for us.<br />
--><br />
<documentation url="http://www.example.com/help/mail/thunderbird"><br />
<descr lang="en">Configure Thunderbird 2.0 for IMAP</descr><br />
<descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr><br />
</documentation><br />
<br />
</emailProvider><br />
<br />
<!-- Syncronize the user's address book / contacts. Not yet implemented. --><br />
<addressbook type="carddav"><br />
<username>%EMAILADDRESS%</username> <!-- see <incomingServer> --><br />
<!-- Authentication methods. See also <incomingServer>.<br />
"http-basic":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Basic<br />
"http-digest":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Digest<br />
"OAuth2":<br />
OAuth2. Uses the same token as for email.<br />
--><br />
<authentication>http-basic</authentication><br />
<serverURL>https://contacts.example.com/remote.php/dav<serverURL><br />
</addressbook><br />
<br />
<!-- Syncronize the user's calendar. Not yet implemented. --><br />
<calendar type="caldav"><br />
<username>%EMAILADDRESS%</username> <!-- see <incomingServer> --><br />
<authentication>http-basic</authentication> <!-- see <addressbook> --><br />
<serverURL>https://calendar.example.com/remote.php/dav<serverURL><br />
</calendar><br />
<br />
<!-- Upload files, allowing the user to share them. Not yet implemented.<br />
This can be used for Thunderbird's FileLink feature,<br />
or to set up a file sync folder on the user's desktop. --><br />
<fileShare type="webdav"><br />
<username>%EMAILADDRESS%</username> <!-- see <incomingServer> --><br />
<authentication>http-basic</authentication> <!-- see <addressbook> --><br />
<serverURL>https://share.example.com/remote.php/dav<serverURL><br />
</calendar><br />
<br />
<!-- This allows to access the webmail service of the provider.<br />
The URLs are loaded into a standard webbrowser for the user.<br />
Specifying this is optional. --><br />
<webMail><br />
<!-- Webpage where the user has to log in manually by entering username<br />
and password himself.<br />
HTTPS required. --><br />
<loginPage url="https://mail.example.com/login/" /><br />
<br />
<!-- Same as loginAutomaticDOM, but the website makes checks that<br />
the user comes from the login page. So, open the login page<br />
in the browser, get the page's DOM, fill out name and password<br />
fields for the user, and trigger the login button.<br />
The login button might not be an HTML button, just a div, so<br />
to trigger it, send a click event to it.<br />
HTTPS is required for the URL. --><br />
<loginPageInfo url="https://mail.example.com/login/"><br />
<!-- What to fill into the usernameField.<br />
Format is the same as for <username> within <incomingServer>,<br />
including placeholders. See below for valid placeholders. --><br />
<username>%EMAILADDRESS%</username><br />
<!-- Allows to find the textfield on the page, to fill it out.<br />
The id attribute give the DOM ID,<br />
The name attribute give the DOM name attribute.<br />
One or both of id and name attributes must exist.<br />
Try the ID first (e.g. using getElementById()), if existing.<br />
Otherwise, try finding the element by name.<br />
Don't treat the IDs given in this XML file as trusted,<br />
but before using them, verify the format<br />
(e.g. only characters and digits for IDs).<br />
If you use powerful functions like jQuery, and the XML returns<br />
you code in the username ID, and you feed it unchecked to jQuery,<br />
it may be executed. --><br />
<usernameField id="email_field" name="email" /><br />
<passwordField name="password" /><br />
<!-- The submit button to trigger the server submit<br />
after filling in the fields.<br />
id and name attributes: See <usernameField> --><br />
<loginButton id="submit_button" name="login"/><br />
</loginPageInfo><br />
</webMail><br />
<br />
<clientConfigUpdate url="https://www.example.com/config/mozilla.xml" /><br />
<br />
</clientConfig><br />
</pre><br />
<br />
= Multiple servers =<br />
<br />
incomingServer and outgoingServer may appear several times. They are in order of priority, the first entry should generally be used, unless there's a specific factor or policy which prefers a later config.<br />
<br />
For example, there may be configs with STARTTLS and normal SSL. Use the first entry listed. If that fails (server config change), you can try the second config. If IMAP and POP3 servers both exist, then both should be listed; the client or end user can select the protocol which best suits its needs. The config/ISP can, however, express a preference for IMAP or POP3 by what is listed first in the config file.<br />
<br />
= Placeholders =<br />
<br />
The email address (before @ or with domain) that the user entered can be used as placeholder in the config file, so the file is the same for all users (i.e. static).<br />
<br />
Placeholders:<br />
* %EMAILADDRESS% (full email address of the user, usually entered by the user)<br />
* %EMAILLOCALPART% (email address, part before @)<br />
* %EMAILDOMAIN% (email address, part after @)<br />
* %REALNAME% (needed?)<br />
* The key (surrounded by %) in <inputfield key=""> (see below)<br />
<br />
These placeholders can be used as value or value part in most settings which take a string.<br />
<br />
= User input fields =<br />
<br />
(not yet implemented, see [https://bugzilla.mozilla.org/show_bug.cgi?id=564043 bug 564043])<br />
<br />
For some ISPs, the IMPA/POP/SMTP username (and maybe other fields) has no relation to the email address and has to be entered separately. E.g. Email address is ben.bucksch@wong.com (chosen by user), but username is G675476 (provided by ISP).<br />
<br />
In this case, an <inputfield> can be added for the username. It will let the client show a textfield to the user. The user-visible label is the one provided in the <inputfield label=""> attribute, to allow the ISP to use custom terminology for "username". The label is not localizable, that would be too complicated and most ISPs are local anyways - if really important, the ISP config server can look at the HTTP headers during the fetch.<br />
<br />
The text that the user entered is written into a placeholder %KEY%, where KEY is the content of the <inputfield key="KEY"> attribute and must be only upper case letters. The placeholder can then be used in other settings, see [[#Placeholders]] above.<br />
<br />
For example, a config file entry<br />
<userinput label="Username" key="%USERNAME%">D123456</userinput><br />
would result in a UI like:<br />
Username: [ ] example: D123456<br />
and cound be used elsewhere in the config file like:<br />
<username>%USERNAME%</username><br />
and if the user enters "D32198", it would be automatically filled in like:<br />
<username>D32198</username><br />
i.e. using D32198 as username for IMAP, POP or SMTP.<br />
<br />
The system is generic, so that it can in theory be used for other values as well. No other such purpose is currently known, apart from a separate POP and SMTP username maybe. It should not be used to let the user supply hostnames, as that would defeat the purpose of the autoconfig and be worse than the manual config UI provided by the client.<br />
<br />
= OAuth2 =<br />
<br />
Due to a defficiency in the OAuth2 spec, the client is usually required to send a client credential key, which in turn requires the client to be registered and approved by the email provider. Unfortunately, this not only allows email providers to block specific email clients (which is contrary to the idea of Open-Source), but also makes it impossible to support arbitrary OAuth2 servers. That's why Thunderbird is forced to hardcode the servers that it supports and the respecive client keys. That means that you cannot use OAuth2 for your own server. Only the servers listed on [https://searchfox.org/comm-central/source/mailnews/base/src/OAuth2Providers.jsm OAuth2Providers.jsm] will work.<br />
<br />
A server using OAuth2 auth looks this:<br />
<pre><br />
<incomingServer type="imap"><br />
<hostname>imap.gmail.com</hostname><br />
<port>993</port><br />
<socketType>SSL</socketType><br />
<username>%EMAILADDRESS%</username><br />
<authentication>OAuth2</authentication><br />
<authentication>password-cleartext</authentication><br />
<oAuth2><br />
<issuer>login.yahoo.com<issuer><br />
<scope>mail-w<scope><br />
<authURL>https://api.login.yahoo.com/oauth2/request_auth</authURL><br />
<tokenURL>https://api.login.yahoo.com/oauth2/get_token</tokenURL><br />
<oAuth2><br />
</incomingServer><br />
</pre><br />
<br />
Note that the `<oAuth2>` contents are not yet supported by Thunderbird. They are planned to be supported later, removing the need to hardcode these parameters. As of today, `<authentication>OAuth2</authentication>` is supported.<br />
<br />
Note that there are two `<authentication>` elements. This allows a fallback, in case a client does not support OAuth2 or does not have a client key for this OAuth2 issuer and therefore cannot authenticate with this issuer.<br />
<br />
= TODO =<br />
<br />
* Values specific to IMAP, e.g. bug 558659 (special folders), bug 572465 (subfolders) etc.. However, most of these can and should be done as IMAP extensions.<br />
* All settings and enum values</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration:ConfigFileFormat&diff=1232891Thunderbird:Autoconfiguration:ConfigFileFormat2021-01-02T04:02:11Z<p>BenB: /* XML */ Typo</p>
<hr />
<div>Author: [[User:BenB|Ben Bucksch]]. Please do not change this doc without checking with the author.<br />
<br />
This page is the authorative specification of the config file that the Mozilla ISPDB and config services at ISPs return.<br />
<br />
It is XML, with a clearly defined format, to be stable and usable by other mail clients, too. Update Aug 2010: In fact, [http://projects.gnome.org/evolution/ Evolution] and [http://userbase.kde.org/KMail KMail] and [http://www.kontact.org Kontact] now use it, too.<br />
<br />
= Description =<br />
<br />
* [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Description of the different mechanisms to serve the configuration file]<br />
* [https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo How to create your own config file]<br />
<br />
= XML =<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<clientConfig version="1.1"><br />
<emailProvider id="example.com"><br />
<domain>example.com</domain><br />
<domain>example.net</domain><br />
<br />
<displayName>Google Mail</displayName><br />
<displayShortName>GMail</displayShortName><br />
<br />
<!-- type=<br />
"imap": IMAP<br />
"pop3": POP3<br />
--><br />
<incomingServer type="pop3"><br />
<hostname>pop.example.com</hostname><br />
<port>995</port><br />
<socketType>SSL</socketType><br />
<!-- "plain": no encryption<br />
"SSL": SSL 3 or TLS 1 on SSL-specific port<br />
"STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS<br />
--><br />
<username>%EMAILLOCALPART%</username><br />
<!-- Authentication methods:<br />
"password-cleartext",<br />
Send password in the clear<br />
(dangerous, if SSL isn't used either).<br />
AUTH PLAIN, LOGIN or protocol-native login.<br />
"password-encrypted",<br />
A secure encrypted password mechanism.<br />
Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.<br />
"NTLM":<br />
Use NTLM (or NTLMv2 or successors),<br />
the Windows login mechanism.<br />
"GSSAPI":<br />
Use Kerberos / GSSAPI,<br />
a single-signon mechanism used for big sites.<br />
"client-IP-address":<br />
The server recognizes this user based on the IP address.<br />
No authentication needed, the server will require no username nor password.<br />
"TLS-client-cert":<br />
On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)<br />
"OAuth2":<br />
OAuth2. Works only on specific hardcoded servers, please see below. Should be added only as second alternative.<br />
"none":<br />
No authentication<br />
--><br />
<authentication>password-cleartext</authentication><br />
<pop3><br />
<!-- remove the following and leave to client/user? --><br />
<leaveMessagesOnServer>true</leaveMessagesOnServer><br />
<downloadOnBiff>true</downloadOnBiff><br />
<daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer><br />
<!-- only for servers which don't allow checks more often --><br />
<checkInterval minutes="15"/><!-- not yet supported --><br />
</pop3><br />
<password>optional: the user's password</password><br />
</incomingServer><br />
<br />
<outgoingServer type="smtp"><br />
<hostname>smtp.googlemail.com</hostname><br />
<port>587</port><br />
<socketType>STARTTLS</socketType> <!-- see above --><br />
<username>%EMAILLOCALPART%</username> <!-- if smtp-auth --><br />
<!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.<br />
For values, see incoming.<br />
Additional options here:<br />
"SMTP-after-POP":<br />
authenticate to incoming mail server first<br />
before contacting the smtp server.<br />
Compatibility note: Thunderbird 3.0 accepts only "plain",<br />
"secure", "none", and "smtp-after-pop".<br />
It will ignore the whole XML file, if other values are given.<br />
--><br />
<authentication>password-cleartext</authentication><br />
<!-- If the server makes some additional requirements beyond<br />
<authentication>.<br />
"client-IP-address": The server is only reachable or works,<br />
if the user is in a certain IP network, e.g.<br />
the dialed into the ISP's network (DSL, cable, modem) or<br />
connected to a company network.<br />
Note: <authentication>client-IP-address</><br />
means that you may use the server without any auth.<br />
<authentication>password-cleartext</> *and*<br />
<restriction>client-IP-address</> means that you need to<br />
be in the correct IP network *and* (should) authenticate.<br />
Servers which do that are highly discouraged and<br />
should be avoided, see {{bug|556267}}.<br />
Not yet implemented. Spec (element name?) up to change.<br />
--><br />
<restriction>client-IP-address</restriction><br />
<!-- remove the following and leave to client/user? --><br />
<addThisServer>true</addThisServer><br />
<useGlobalPreferredServer>true</useGlobalPreferredServer><br />
<password>optional: the user's password</password><br />
</outgoingServer><br />
<br />
<identity><br />
<!-- needed? --><br />
<!-- We don't want Verizon setting "Organization: Verizon"<br />
for its customers --><br />
</identity><br />
<br />
<!-- see description. Not yet supported, see bug 564043. --><br />
<inputField key="USERNAME" label="Screen name"></inputField><br />
<inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField><br />
<br />
<!-- Add this only when users (who already have an account) have to<br />
do something manually before the account can work with IMAP/POP or SSL.<br />
Note: Per XML, & (ampersand) needs to be escaped to & a m p ;<br />
(without spaces).<br />
Not yet implemented, see bug 586364. --><br />
<enable<br />
visiturl="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"><br />
<instruction>Check 'Enable IMAP and POP' in Google settings page</instruction><br />
<instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction><br />
</enable><br />
<br />
<!-- A page where the ISP describes the configuration.<br />
This is purely informational and currently mainly for<br />
maintenance of the files and not used by the client at all.<br />
Note that we do not necessarily use exactly the config suggested<br />
by the ISP, e.g. when they don't recommend SSL, but it's available,<br />
we will configure SSL.<br />
The text content should contains a description in the native<br />
language of the ISP (customers), and a short English description,<br />
mostly for us.<br />
--><br />
<documentation url="http://www.example.com/help/mail/thunderbird"><br />
<descr lang="en">Configure Thunderbird 2.0 for IMAP</descr><br />
<descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr><br />
</documentation><br />
<br />
</emailProvider><br />
<br />
<!-- Syncronize the user's address book / contacts. Not yet implemented. --><br />
<addressbook type="carddav"><br />
<username>%EMAILADDRESS%</username> <!-- see <incomingServer> --><br />
<!-- Authentication methods. See also <incomingServer>.<br />
"http-basic":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Basic<br />
"http-digest":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Digest<br />
"OAuth2":<br />
OAuth2. Uses the same token as for email.<br />
--><br />
<authentication>http-basic</authentication><br />
<serverURL>https://contacts.example.com/remote.php/dav<serverURL><br />
</addressbook><br />
<br />
<!-- Syncronize the user's calendar. Not yet implemented. --><br />
<calendar type="caldav"><br />
<username>%EMAILADDRESS%</username> <!-- see <incomingServer> --><br />
<authentication>http-basic</authentication> <!-- see <addressbook> --><br />
<serverURL>https://calendar.example.com/remote.php/dav<serverURL><br />
</calendar><br />
<br />
<!-- This allows to access the webmail service of the provider.<br />
The URLs are loaded into a standard webbrowser for the user.<br />
Specifying this is optional. --><br />
<webMail><br />
<!-- Webpage where the user has to log in manually by entering username<br />
and password himself.<br />
HTTPS required. --><br />
<loginPage url="https://mail.example.com/login/" /><br />
<br />
<!-- Same as loginAutomaticDOM, but the website makes checks that<br />
the user comes from the login page. So, open the login page<br />
in the browser, get the page's DOM, fill out name and password<br />
fields for the user, and trigger the login button.<br />
The login button might not be an HTML button, just a div, so<br />
to trigger it, send a click event to it.<br />
HTTPS is required for the URL. --><br />
<loginPageInfo url="https://mail.example.com/login/"><br />
<!-- What to fill into the usernameField.<br />
Format is the same as for <username> within <incomingServer>,<br />
including placeholders. See below for valid placeholders. --><br />
<username>%EMAILADDRESS%</username><br />
<!-- Allows to find the textfield on the page, to fill it out.<br />
The id attribute give the DOM ID,<br />
The name attribute give the DOM name attribute.<br />
One or both of id and name attributes must exist.<br />
Try the ID first (e.g. using getElementById()), if existing.<br />
Otherwise, try finding the element by name.<br />
Don't treat the IDs given in this XML file as trusted,<br />
but before using them, verify the format<br />
(e.g. only characters and digits for IDs).<br />
If you use powerful functions like jQuery, and the XML returns<br />
you code in the username ID, and you feed it unchecked to jQuery,<br />
it may be executed. --><br />
<usernameField id="email_field" name="email" /><br />
<passwordField name="password" /><br />
<!-- The submit button to trigger the server submit<br />
after filling in the fields.<br />
id and name attributes: See <usernameField> --><br />
<loginButton id="submit_button" name="login"/><br />
</loginPageInfo><br />
</webMail><br />
<br />
<clientConfigUpdate url="https://www.example.com/config/mozilla.xml" /><br />
<br />
</clientConfig><br />
</pre><br />
<br />
= Multiple servers =<br />
<br />
incomingServer and outgoingServer may appear several times. They are in order of priority, the first entry should generally be used, unless there's a specific factor or policy which prefers a later config.<br />
<br />
For example, there may be configs with STARTTLS and normal SSL. Use the first entry listed. If that fails (server config change), you can try the second config. If IMAP and POP3 servers both exist, then both should be listed; the client or end user can select the protocol which best suits its needs. The config/ISP can, however, express a preference for IMAP or POP3 by what is listed first in the config file.<br />
<br />
= Placeholders =<br />
<br />
The email address (before @ or with domain) that the user entered can be used as placeholder in the config file, so the file is the same for all users (i.e. static).<br />
<br />
Placeholders:<br />
* %EMAILADDRESS% (full email address of the user, usually entered by the user)<br />
* %EMAILLOCALPART% (email address, part before @)<br />
* %EMAILDOMAIN% (email address, part after @)<br />
* %REALNAME% (needed?)<br />
* The key (surrounded by %) in <inputfield key=""> (see below)<br />
<br />
These placeholders can be used as value or value part in most settings which take a string.<br />
<br />
= User input fields =<br />
<br />
(not yet implemented, see [https://bugzilla.mozilla.org/show_bug.cgi?id=564043 bug 564043])<br />
<br />
For some ISPs, the IMPA/POP/SMTP username (and maybe other fields) has no relation to the email address and has to be entered separately. E.g. Email address is ben.bucksch@wong.com (chosen by user), but username is G675476 (provided by ISP).<br />
<br />
In this case, an <inputfield> can be added for the username. It will let the client show a textfield to the user. The user-visible label is the one provided in the <inputfield label=""> attribute, to allow the ISP to use custom terminology for "username". The label is not localizable, that would be too complicated and most ISPs are local anyways - if really important, the ISP config server can look at the HTTP headers during the fetch.<br />
<br />
The text that the user entered is written into a placeholder %KEY%, where KEY is the content of the <inputfield key="KEY"> attribute and must be only upper case letters. The placeholder can then be used in other settings, see [[#Placeholders]] above.<br />
<br />
For example, a config file entry<br />
<userinput label="Username" key="%USERNAME%">D123456</userinput><br />
would result in a UI like:<br />
Username: [ ] example: D123456<br />
and cound be used elsewhere in the config file like:<br />
<username>%USERNAME%</username><br />
and if the user enters "D32198", it would be automatically filled in like:<br />
<username>D32198</username><br />
i.e. using D32198 as username for IMAP, POP or SMTP.<br />
<br />
The system is generic, so that it can in theory be used for other values as well. No other such purpose is currently known, apart from a separate POP and SMTP username maybe. It should not be used to let the user supply hostnames, as that would defeat the purpose of the autoconfig and be worse than the manual config UI provided by the client.<br />
<br />
= OAuth2 =<br />
<br />
Due to a defficiency in the OAuth2 spec, the client is usually required to send a client credential key, which in turn requires the client to be registered and approved by the email provider. Unfortunately, this not only allows email providers to block specific email clients (which is contrary to the idea of Open-Source), but also makes it impossible to support arbitrary OAuth2 servers. That's why Thunderbird is forced to hardcode the servers that it supports and the respecive client keys. That means that you cannot use OAuth2 for your own server. Only the servers listed on [https://searchfox.org/comm-central/source/mailnews/base/src/OAuth2Providers.jsm OAuth2Providers.jsm] will work.<br />
<br />
A server using OAuth2 auth looks this:<br />
<pre><br />
<incomingServer type="imap"><br />
<hostname>imap.gmail.com</hostname><br />
<port>993</port><br />
<socketType>SSL</socketType><br />
<username>%EMAILADDRESS%</username><br />
<authentication>OAuth2</authentication><br />
<authentication>password-cleartext</authentication><br />
<oAuth2><br />
<issuer>login.yahoo.com<issuer><br />
<scope>mail-w<scope><br />
<authURL>https://api.login.yahoo.com/oauth2/request_auth</authURL><br />
<tokenURL>https://api.login.yahoo.com/oauth2/get_token</tokenURL><br />
<oAuth2><br />
</incomingServer><br />
</pre><br />
<br />
Note that the `<oAuth2>` contents are not yet supported by Thunderbird. They are planned to be supported later, removing the need to hardcode these parameters. As of today, `<authentication>OAuth2</authentication>` is supported.<br />
<br />
Note that there are two `<authentication>` elements. This allows a fallback, in case a client does not support OAuth2 or does not have a client key for this OAuth2 issuer and therefore cannot authenticate with this issuer.<br />
<br />
= TODO =<br />
<br />
* Values specific to IMAP, e.g. bug 558659 (special folders), bug 572465 (subfolders) etc.. However, most of these can and should be done as IMAP extensions.<br />
* All settings and enum values</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration:ConfigFileFormat&diff=1232890Thunderbird:Autoconfiguration:ConfigFileFormat2021-01-02T04:01:35Z<p>BenB: /* <addressbook> */ Typos</p>
<hr />
<div>Author: [[User:BenB|Ben Bucksch]]. Please do not change this doc without checking with the author.<br />
<br />
This page is the authorative specification of the config file that the Mozilla ISPDB and config services at ISPs return.<br />
<br />
It is XML, with a clearly defined format, to be stable and usable by other mail clients, too. Update Aug 2010: In fact, [http://projects.gnome.org/evolution/ Evolution] and [http://userbase.kde.org/KMail KMail] and [http://www.kontact.org Kontact] now use it, too.<br />
<br />
= Description =<br />
<br />
* [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Description of the different mechanisms to serve the configuration file]<br />
* [https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo How to create your own config file]<br />
<br />
= XML =<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<clientConfig version="1.1"><br />
<emailProvider id="example.com"><br />
<domain>example.com</domain><br />
<domain>example.net</domain><br />
<br />
<displayName>Google Mail</displayName><br />
<displayShortName>GMail</displayShortName><br />
<br />
<!-- type=<br />
"imap": IMAP<br />
"pop3": POP3<br />
--><br />
<incomingServer type="pop3"><br />
<hostname>pop.example.com</hostname><br />
<port>995</port><br />
<socketType>SSL</socketType><br />
<!-- "plain": no encryption<br />
"SSL": SSL 3 or TLS 1 on SSL-specific port<br />
"STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS<br />
--><br />
<username>%EMAILLOCALPART%</username><br />
<!-- Authentication methods:<br />
"password-cleartext",<br />
Send password in the clear<br />
(dangerous, if SSL isn't used either).<br />
AUTH PLAIN, LOGIN or protocol-native login.<br />
"password-encrypted",<br />
A secure encrypted password mechanism.<br />
Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.<br />
"NTLM":<br />
Use NTLM (or NTLMv2 or successors),<br />
the Windows login mechanism.<br />
"GSSAPI":<br />
Use Kerberos / GSSAPI,<br />
a single-signon mechanism used for big sites.<br />
"client-IP-address":<br />
The server recognizes this user based on the IP address.<br />
No authentication needed, the server will require no username nor password.<br />
"TLS-client-cert":<br />
On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)<br />
"OAuth2":<br />
OAuth2. Works only on specific hardcoded servers, please see below. Should be added only as second alternative.<br />
"none":<br />
No authentication<br />
--><br />
<authentication>password-cleartext</authentication><br />
<pop3><br />
<!-- remove the following and leave to client/user? --><br />
<leaveMessagesOnServer>true</leaveMessagesOnServer><br />
<downloadOnBiff>true</downloadOnBiff><br />
<daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer><br />
<!-- only for servers which don't allow checks more often --><br />
<checkInterval minutes="15"/><!-- not yet supported --><br />
</pop3><br />
<password>optional: the user's password</password><br />
</incomingServer><br />
<br />
<outgoingServer type="smtp"><br />
<hostname>smtp.googlemail.com</hostname><br />
<port>587</port><br />
<socketType>STARTTLS</socketType> <!-- see above --><br />
<username>%EMAILLOCALPART%</username> <!-- if smtp-auth --><br />
<!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.<br />
For values, see incoming.<br />
Additional options here:<br />
"SMTP-after-POP":<br />
authenticate to incoming mail server first<br />
before contacting the smtp server.<br />
Compatibility note: Thunderbird 3.0 accepts only "plain",<br />
"secure", "none", and "smtp-after-pop".<br />
It will ignore the whole XML file, if other values are given.<br />
--><br />
<authentication>password-cleartext</authentication><br />
<!-- If the server makes some additional requirements beyond<br />
<authentication>.<br />
"client-IP-address": The server is only reachable or works,<br />
if the user is in a certain IP network, e.g.<br />
the dialed into the ISP's network (DSL, cable, modem) or<br />
connected to a company network.<br />
Note: <authentication>client-IP-address</><br />
means that you may use the server without any auth.<br />
<authentication>password-cleartext</> *and*<br />
<restriction>client-IP-address</> means that you need to<br />
be in the correct IP network *and* (should) authenticate.<br />
Servers which do that are highly discouraged and<br />
should be avoided, see {{bug|556267}}.<br />
Not yet implemented. Spec (element name?) up to change.<br />
--><br />
<restriction>client-IP-address</restriction><br />
<!-- remove the following and leave to client/user? --><br />
<addThisServer>true</addThisServer><br />
<useGlobalPreferredServer>true</useGlobalPreferredServer><br />
<password>optional: the user's password</password><br />
</outgoingServer><br />
<br />
<identity><br />
<!-- needed? --><br />
<!-- We don't want Verizon setting "Organization: Verizon"<br />
for its customers --><br />
</identity><br />
<br />
<!-- see description. Not yet supported, see bug 564043. --><br />
<inputField key="USERNAME" label="Screen name"></inputField><br />
<inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField><br />
<br />
<!-- Add this only when users (who already have an account) have to<br />
do something manually before the account can work with IMAP/POP or SSL.<br />
Note: Per XML, & (ampersand) needs to be escaped to & a m p ;<br />
(without spaces).<br />
Not yet implemented, see bug 586364. --><br />
<enable<br />
visiturl="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"><br />
<instruction>Check 'Enable IMAP and POP' in Google settings page</instruction><br />
<instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction><br />
</enable><br />
<br />
<!-- A page where the ISP describes the configuration.<br />
This is purely informational and currently mainly for<br />
maintenance of the files and not used by the client at all.<br />
Note that we do not necessarily use exactly the config suggested<br />
by the ISP, e.g. when they don't recommend SSL, but it's available,<br />
we will configure SSL.<br />
The text content should contains a description in the native<br />
language of the ISP (customers), and a short English description,<br />
mostly for us.<br />
--><br />
<documentation url="http://www.example.com/help/mail/thunderbird"><br />
<descr lang="en">Configure Thunderbird 2.0 for IMAP</descr><br />
<descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr><br />
</documentation><br />
<br />
</emailProvider><br />
<br />
<!-- Syncronize the user's address book / contacts. Not yet implemented. --><br />
<addressbook type="carddav"><br />
<username>%EMAILADDRESS%</username> <!-- see <incomingServer> --><br />
<!-- Authentication methods. See also <incomingServer>.<br />
"http-basic":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Basic<br />
"http-digest":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Digest<br />
"OAuth2":<br />
OAuth2. Uses the same token as for email.<br />
--><br />
<authentication>http-basic</authentication><br />
<serverURL>https://contacts.example.com/remote.php/dav<serverURL><br />
</addressbook><br />
<br />
<!-- Syncronize the user's calendar. Not yet implemented. --><br />
<calendar type="caldav"><br />
<username>%EMAILADDRESS%</username> <!-- see <incomingServer> --><br />
<authentication>http-basic</authentication> <!-- see <addressbook> --><br />
<serverURL>https://calendar.example.com/remote.php/dav<serverURL><br />
</calendar> <!-- not yet supported --><br />
<br />
<!-- This allows to access the webmail service of the provider.<br />
The URLs are loaded into a standard webbrowser for the user.<br />
Specifying this is optional. --><br />
<webMail><br />
<!-- Webpage where the user has to log in manually by entering username<br />
and password himself.<br />
HTTPS required. --><br />
<loginPage url="https://mail.example.com/login/" /><br />
<br />
<!-- Same as loginAutomaticDOM, but the website makes checks that<br />
the user comes from the login page. So, open the login page<br />
in the browser, get the page's DOM, fill out name and password<br />
fields for the user, and trigger the login button.<br />
The login button might not be an HTML button, just a div, so<br />
to trigger it, send a click event to it.<br />
HTTPS is required for the URL. --><br />
<loginPageInfo url="https://mail.example.com/login/"><br />
<!-- What to fill into the usernameField.<br />
Format is the same as for <username> within <incomingServer>,<br />
including placeholders. See below for valid placeholders. --><br />
<username>%EMAILADDRESS%</username><br />
<!-- Allows to find the textfield on the page, to fill it out.<br />
The id attribute give the DOM ID,<br />
The name attribute give the DOM name attribute.<br />
One or both of id and name attributes must exist.<br />
Try the ID first (e.g. using getElementById()), if existing.<br />
Otherwise, try finding the element by name.<br />
Don't treat the IDs given in this XML file as trusted,<br />
but before using them, verify the format<br />
(e.g. only characters and digits for IDs).<br />
If you use powerful functions like jQuery, and the XML returns<br />
you code in the username ID, and you feed it unchecked to jQuery,<br />
it may be executed. --><br />
<usernameField id="email_field" name="email" /><br />
<passwordField name="password" /><br />
<!-- The submit button to trigger the server submit<br />
after filling in the fields.<br />
id and name attributes: See <usernameField> --><br />
<loginButton id="submit_button" name="login"/><br />
</loginPageInfo><br />
</webMail><br />
<br />
<clientConfigUpdate url="https://www.example.com/config/mozilla.xml" /><br />
<br />
</clientConfig><br />
</pre><br />
<br />
= Multiple servers =<br />
<br />
incomingServer and outgoingServer may appear several times. They are in order of priority, the first entry should generally be used, unless there's a specific factor or policy which prefers a later config.<br />
<br />
For example, there may be configs with STARTTLS and normal SSL. Use the first entry listed. If that fails (server config change), you can try the second config. If IMAP and POP3 servers both exist, then both should be listed; the client or end user can select the protocol which best suits its needs. The config/ISP can, however, express a preference for IMAP or POP3 by what is listed first in the config file.<br />
<br />
= Placeholders =<br />
<br />
The email address (before @ or with domain) that the user entered can be used as placeholder in the config file, so the file is the same for all users (i.e. static).<br />
<br />
Placeholders:<br />
* %EMAILADDRESS% (full email address of the user, usually entered by the user)<br />
* %EMAILLOCALPART% (email address, part before @)<br />
* %EMAILDOMAIN% (email address, part after @)<br />
* %REALNAME% (needed?)<br />
* The key (surrounded by %) in <inputfield key=""> (see below)<br />
<br />
These placeholders can be used as value or value part in most settings which take a string.<br />
<br />
= User input fields =<br />
<br />
(not yet implemented, see [https://bugzilla.mozilla.org/show_bug.cgi?id=564043 bug 564043])<br />
<br />
For some ISPs, the IMPA/POP/SMTP username (and maybe other fields) has no relation to the email address and has to be entered separately. E.g. Email address is ben.bucksch@wong.com (chosen by user), but username is G675476 (provided by ISP).<br />
<br />
In this case, an <inputfield> can be added for the username. It will let the client show a textfield to the user. The user-visible label is the one provided in the <inputfield label=""> attribute, to allow the ISP to use custom terminology for "username". The label is not localizable, that would be too complicated and most ISPs are local anyways - if really important, the ISP config server can look at the HTTP headers during the fetch.<br />
<br />
The text that the user entered is written into a placeholder %KEY%, where KEY is the content of the <inputfield key="KEY"> attribute and must be only upper case letters. The placeholder can then be used in other settings, see [[#Placeholders]] above.<br />
<br />
For example, a config file entry<br />
<userinput label="Username" key="%USERNAME%">D123456</userinput><br />
would result in a UI like:<br />
Username: [ ] example: D123456<br />
and cound be used elsewhere in the config file like:<br />
<username>%USERNAME%</username><br />
and if the user enters "D32198", it would be automatically filled in like:<br />
<username>D32198</username><br />
i.e. using D32198 as username for IMAP, POP or SMTP.<br />
<br />
The system is generic, so that it can in theory be used for other values as well. No other such purpose is currently known, apart from a separate POP and SMTP username maybe. It should not be used to let the user supply hostnames, as that would defeat the purpose of the autoconfig and be worse than the manual config UI provided by the client.<br />
<br />
= OAuth2 =<br />
<br />
Due to a defficiency in the OAuth2 spec, the client is usually required to send a client credential key, which in turn requires the client to be registered and approved by the email provider. Unfortunately, this not only allows email providers to block specific email clients (which is contrary to the idea of Open-Source), but also makes it impossible to support arbitrary OAuth2 servers. That's why Thunderbird is forced to hardcode the servers that it supports and the respecive client keys. That means that you cannot use OAuth2 for your own server. Only the servers listed on [https://searchfox.org/comm-central/source/mailnews/base/src/OAuth2Providers.jsm OAuth2Providers.jsm] will work.<br />
<br />
A server using OAuth2 auth looks this:<br />
<pre><br />
<incomingServer type="imap"><br />
<hostname>imap.gmail.com</hostname><br />
<port>993</port><br />
<socketType>SSL</socketType><br />
<username>%EMAILADDRESS%</username><br />
<authentication>OAuth2</authentication><br />
<authentication>password-cleartext</authentication><br />
<oAuth2><br />
<issuer>login.yahoo.com<issuer><br />
<scope>mail-w<scope><br />
<authURL>https://api.login.yahoo.com/oauth2/request_auth</authURL><br />
<tokenURL>https://api.login.yahoo.com/oauth2/get_token</tokenURL><br />
<oAuth2><br />
</incomingServer><br />
</pre><br />
<br />
Note that the `<oAuth2>` contents are not yet supported by Thunderbird. They are planned to be supported later, removing the need to hardcode these parameters. As of today, `<authentication>OAuth2</authentication>` is supported.<br />
<br />
Note that there are two `<authentication>` elements. This allows a fallback, in case a client does not support OAuth2 or does not have a client key for this OAuth2 issuer and therefore cannot authenticate with this issuer.<br />
<br />
= TODO =<br />
<br />
* Values specific to IMAP, e.g. bug 558659 (special folders), bug 572465 (subfolders) etc.. However, most of these can and should be done as IMAP extensions.<br />
* All settings and enum values</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration:ConfigFileFormat&diff=1232889Thunderbird:Autoconfiguration:ConfigFileFormat2021-01-02T03:59:38Z<p>BenB: Add calendar and address book to the spec, so that TB can autoconfigure them</p>
<hr />
<div>Author: [[User:BenB|Ben Bucksch]]. Please do not change this doc without checking with the author.<br />
<br />
This page is the authorative specification of the config file that the Mozilla ISPDB and config services at ISPs return.<br />
<br />
It is XML, with a clearly defined format, to be stable and usable by other mail clients, too. Update Aug 2010: In fact, [http://projects.gnome.org/evolution/ Evolution] and [http://userbase.kde.org/KMail KMail] and [http://www.kontact.org Kontact] now use it, too.<br />
<br />
= Description =<br />
<br />
* [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Description of the different mechanisms to serve the configuration file]<br />
* [https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo How to create your own config file]<br />
<br />
= XML =<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<clientConfig version="1.1"><br />
<emailProvider id="example.com"><br />
<domain>example.com</domain><br />
<domain>example.net</domain><br />
<br />
<displayName>Google Mail</displayName><br />
<displayShortName>GMail</displayShortName><br />
<br />
<!-- type=<br />
"imap": IMAP<br />
"pop3": POP3<br />
--><br />
<incomingServer type="pop3"><br />
<hostname>pop.example.com</hostname><br />
<port>995</port><br />
<socketType>SSL</socketType><br />
<!-- "plain": no encryption<br />
"SSL": SSL 3 or TLS 1 on SSL-specific port<br />
"STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS<br />
--><br />
<username>%EMAILLOCALPART%</username><br />
<!-- Authentication methods:<br />
"password-cleartext",<br />
Send password in the clear<br />
(dangerous, if SSL isn't used either).<br />
AUTH PLAIN, LOGIN or protocol-native login.<br />
"password-encrypted",<br />
A secure encrypted password mechanism.<br />
Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.<br />
"NTLM":<br />
Use NTLM (or NTLMv2 or successors),<br />
the Windows login mechanism.<br />
"GSSAPI":<br />
Use Kerberos / GSSAPI,<br />
a single-signon mechanism used for big sites.<br />
"client-IP-address":<br />
The server recognizes this user based on the IP address.<br />
No authentication needed, the server will require no username nor password.<br />
"TLS-client-cert":<br />
On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)<br />
"OAuth2":<br />
OAuth2. Works only on specific hardcoded servers, please see below. Should be added only as second alternative.<br />
"none":<br />
No authentication<br />
--><br />
<authentication>password-cleartext</authentication><br />
<pop3><br />
<!-- remove the following and leave to client/user? --><br />
<leaveMessagesOnServer>true</leaveMessagesOnServer><br />
<downloadOnBiff>true</downloadOnBiff><br />
<daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer><br />
<!-- only for servers which don't allow checks more often --><br />
<checkInterval minutes="15"/><!-- not yet supported --><br />
</pop3><br />
<password>optional: the user's password</password><br />
</incomingServer><br />
<br />
<outgoingServer type="smtp"><br />
<hostname>smtp.googlemail.com</hostname><br />
<port>587</port><br />
<socketType>STARTTLS</socketType> <!-- see above --><br />
<username>%EMAILLOCALPART%</username> <!-- if smtp-auth --><br />
<!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.<br />
For values, see incoming.<br />
Additional options here:<br />
"SMTP-after-POP":<br />
authenticate to incoming mail server first<br />
before contacting the smtp server.<br />
Compatibility note: Thunderbird 3.0 accepts only "plain",<br />
"secure", "none", and "smtp-after-pop".<br />
It will ignore the whole XML file, if other values are given.<br />
--><br />
<authentication>password-cleartext</authentication><br />
<!-- If the server makes some additional requirements beyond<br />
<authentication>.<br />
"client-IP-address": The server is only reachable or works,<br />
if the user is in a certain IP network, e.g.<br />
the dialed into the ISP's network (DSL, cable, modem) or<br />
connected to a company network.<br />
Note: <authentication>client-IP-address</><br />
means that you may use the server without any auth.<br />
<authentication>password-cleartext</> *and*<br />
<restriction>client-IP-address</> means that you need to<br />
be in the correct IP network *and* (should) authenticate.<br />
Servers which do that are highly discouraged and<br />
should be avoided, see {{bug|556267}}.<br />
Not yet implemented. Spec (element name?) up to change.<br />
--><br />
<restriction>client-IP-address</restriction><br />
<!-- remove the following and leave to client/user? --><br />
<addThisServer>true</addThisServer><br />
<useGlobalPreferredServer>true</useGlobalPreferredServer><br />
<password>optional: the user's password</password><br />
</outgoingServer><br />
<br />
<identity><br />
<!-- needed? --><br />
<!-- We don't want Verizon setting "Organization: Verizon"<br />
for its customers --><br />
</identity><br />
<br />
<!-- see description. Not yet supported, see bug 564043. --><br />
<inputField key="USERNAME" label="Screen name"></inputField><br />
<inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField><br />
<br />
<!-- Add this only when users (who already have an account) have to<br />
do something manually before the account can work with IMAP/POP or SSL.<br />
Note: Per XML, & (ampersand) needs to be escaped to & a m p ;<br />
(without spaces).<br />
Not yet implemented, see bug 586364. --><br />
<enable<br />
visiturl="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"><br />
<instruction>Check 'Enable IMAP and POP' in Google settings page</instruction><br />
<instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction><br />
</enable><br />
<br />
<!-- A page where the ISP describes the configuration.<br />
This is purely informational and currently mainly for<br />
maintenance of the files and not used by the client at all.<br />
Note that we do not necessarily use exactly the config suggested<br />
by the ISP, e.g. when they don't recommend SSL, but it's available,<br />
we will configure SSL.<br />
The text content should contains a description in the native<br />
language of the ISP (customers), and a short English description,<br />
mostly for us.<br />
--><br />
<documentation url="http://www.example.com/help/mail/thunderbird"><br />
<descr lang="en">Configure Thunderbird 2.0 for IMAP</descr><br />
<descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr><br />
</documentation><br />
<br />
</emailProvider><br />
<br />
<!-- Syncronize the user's address book / contacts. Not yet implemented. --><br />
<addressbook type="carddav"><br />
<username>%EMAILADDRESS%</username> <!-- see <incomingServer> --><br />
<!-- Authentication methods. See also <incomingServer>.<br />
"http-basic":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Basic<br />
"http-digest":<br />
Authenticate to the HTTP server using<br />
WWW-Authenticate: Digest<br />
"OAuth2":<br />
OAuth2. Uses the same token as for email.<br />
--><br />
<authentication>http-basic</authentication><br />
<serverURL>https://calendar.example.com/remote.php/dav<serverURL><br />
</addressbook><br />
<br />
<!-- Syncronize the user's calendar. Not yet implemented. --><br />
<calendar type="caldav"><br />
<username>%EMAILADDRESS%</username> <!-- see <incomingServer> --><br />
<authentication>http-basic</authentication> <!-- see <addressbook> --><br />
<serverURL>https://calendar.example.com/remote.php/dav<serverURL><br />
</calendar> <!-- not yet supported --><br />
<br />
<!-- This allows to access the webmail service of the provider.<br />
The URLs are loaded into a standard webbrowser for the user.<br />
Specifying this is optional. --><br />
<webMail><br />
<!-- Webpage where the user has to log in manually by entering username<br />
and password himself.<br />
HTTPS required. --><br />
<loginPage url="https://mail.example.com/login/" /><br />
<br />
<!-- Same as loginAutomaticDOM, but the website makes checks that<br />
the user comes from the login page. So, open the login page<br />
in the browser, get the page's DOM, fill out name and password<br />
fields for the user, and trigger the login button.<br />
The login button might not be an HTML button, just a div, so<br />
to trigger it, send a click event to it.<br />
HTTPS is required for the URL. --><br />
<loginPageInfo url="https://mail.example.com/login/"><br />
<!-- What to fill into the usernameField.<br />
Format is the same as for <username> within <incomingServer>,<br />
including placeholders. See below for valid placeholders. --><br />
<username>%EMAILADDRESS%</username><br />
<!-- Allows to find the textfield on the page, to fill it out.<br />
The id attribute give the DOM ID,<br />
The name attribute give the DOM name attribute.<br />
One or both of id and name attributes must exist.<br />
Try the ID first (e.g. using getElementById()), if existing.<br />
Otherwise, try finding the element by name.<br />
Don't treat the IDs given in this XML file as trusted,<br />
but before using them, verify the format<br />
(e.g. only characters and digits for IDs).<br />
If you use powerful functions like jQuery, and the XML returns<br />
you code in the username ID, and you feed it unchecked to jQuery,<br />
it may be executed. --><br />
<usernameField id="email_field" name="email" /><br />
<passwordField name="password" /><br />
<!-- The submit button to trigger the server submit<br />
after filling in the fields.<br />
id and name attributes: See <usernameField> --><br />
<loginButton id="submit_button" name="login"/><br />
</loginPageInfo><br />
</webMail><br />
<br />
<clientConfigUpdate url="https://www.example.com/config/mozilla.xml" /><br />
<br />
</clientConfig><br />
</pre><br />
<br />
= Multiple servers =<br />
<br />
incomingServer and outgoingServer may appear several times. They are in order of priority, the first entry should generally be used, unless there's a specific factor or policy which prefers a later config.<br />
<br />
For example, there may be configs with STARTTLS and normal SSL. Use the first entry listed. If that fails (server config change), you can try the second config. If IMAP and POP3 servers both exist, then both should be listed; the client or end user can select the protocol which best suits its needs. The config/ISP can, however, express a preference for IMAP or POP3 by what is listed first in the config file.<br />
<br />
= Placeholders =<br />
<br />
The email address (before @ or with domain) that the user entered can be used as placeholder in the config file, so the file is the same for all users (i.e. static).<br />
<br />
Placeholders:<br />
* %EMAILADDRESS% (full email address of the user, usually entered by the user)<br />
* %EMAILLOCALPART% (email address, part before @)<br />
* %EMAILDOMAIN% (email address, part after @)<br />
* %REALNAME% (needed?)<br />
* The key (surrounded by %) in <inputfield key=""> (see below)<br />
<br />
These placeholders can be used as value or value part in most settings which take a string.<br />
<br />
= User input fields =<br />
<br />
(not yet implemented, see [https://bugzilla.mozilla.org/show_bug.cgi?id=564043 bug 564043])<br />
<br />
For some ISPs, the IMPA/POP/SMTP username (and maybe other fields) has no relation to the email address and has to be entered separately. E.g. Email address is ben.bucksch@wong.com (chosen by user), but username is G675476 (provided by ISP).<br />
<br />
In this case, an <inputfield> can be added for the username. It will let the client show a textfield to the user. The user-visible label is the one provided in the <inputfield label=""> attribute, to allow the ISP to use custom terminology for "username". The label is not localizable, that would be too complicated and most ISPs are local anyways - if really important, the ISP config server can look at the HTTP headers during the fetch.<br />
<br />
The text that the user entered is written into a placeholder %KEY%, where KEY is the content of the <inputfield key="KEY"> attribute and must be only upper case letters. The placeholder can then be used in other settings, see [[#Placeholders]] above.<br />
<br />
For example, a config file entry<br />
<userinput label="Username" key="%USERNAME%">D123456</userinput><br />
would result in a UI like:<br />
Username: [ ] example: D123456<br />
and cound be used elsewhere in the config file like:<br />
<username>%USERNAME%</username><br />
and if the user enters "D32198", it would be automatically filled in like:<br />
<username>D32198</username><br />
i.e. using D32198 as username for IMAP, POP or SMTP.<br />
<br />
The system is generic, so that it can in theory be used for other values as well. No other such purpose is currently known, apart from a separate POP and SMTP username maybe. It should not be used to let the user supply hostnames, as that would defeat the purpose of the autoconfig and be worse than the manual config UI provided by the client.<br />
<br />
= OAuth2 =<br />
<br />
Due to a defficiency in the OAuth2 spec, the client is usually required to send a client credential key, which in turn requires the client to be registered and approved by the email provider. Unfortunately, this not only allows email providers to block specific email clients (which is contrary to the idea of Open-Source), but also makes it impossible to support arbitrary OAuth2 servers. That's why Thunderbird is forced to hardcode the servers that it supports and the respecive client keys. That means that you cannot use OAuth2 for your own server. Only the servers listed on [https://searchfox.org/comm-central/source/mailnews/base/src/OAuth2Providers.jsm OAuth2Providers.jsm] will work.<br />
<br />
A server using OAuth2 auth looks this:<br />
<pre><br />
<incomingServer type="imap"><br />
<hostname>imap.gmail.com</hostname><br />
<port>993</port><br />
<socketType>SSL</socketType><br />
<username>%EMAILADDRESS%</username><br />
<authentication>OAuth2</authentication><br />
<authentication>password-cleartext</authentication><br />
<oAuth2><br />
<issuer>login.yahoo.com<issuer><br />
<scope>mail-w<scope><br />
<authURL>https://api.login.yahoo.com/oauth2/request_auth</authURL><br />
<tokenURL>https://api.login.yahoo.com/oauth2/get_token</tokenURL><br />
<oAuth2><br />
</incomingServer><br />
</pre><br />
<br />
Note that the `<oAuth2>` contents are not yet supported by Thunderbird. They are planned to be supported later, removing the need to hardcode these parameters. As of today, `<authentication>OAuth2</authentication>` is supported.<br />
<br />
Note that there are two `<authentication>` elements. This allows a fallback, in case a client does not support OAuth2 or does not have a client key for this OAuth2 issuer and therefore cannot authenticate with this issuer.<br />
<br />
= TODO =<br />
<br />
* Values specific to IMAP, e.g. bug 558659 (special folders), bug 572465 (subfolders) etc.. However, most of these can and should be done as IMAP extensions.<br />
* All settings and enum values</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration:ConfigFileFormat&diff=1232888Thunderbird:Autoconfiguration:ConfigFileFormat2021-01-02T03:34:23Z<p>BenB: /* OAuth2 */ <oAuth2></p>
<hr />
<div>Author: [[User:BenB|Ben Bucksch]]. Please do not change this doc without checking with the author.<br />
<br />
This page is the authorative specification of the config file that the Mozilla ISPDB and config services at ISPs return.<br />
<br />
It is XML, with a clearly defined format, to be stable and usable by other mail clients, too. Update Aug 2010: In fact, [http://projects.gnome.org/evolution/ Evolution] and [http://userbase.kde.org/KMail KMail] and [http://www.kontact.org Kontact] now use it, too.<br />
<br />
= Description =<br />
<br />
* [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Description of the different mechanisms to serve the configuration file]<br />
* [https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo How to create your own config file]<br />
<br />
= XML =<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<clientConfig version="1.1"><br />
<emailProvider id="example.com"><br />
<domain>example.com</domain><br />
<domain>example.net</domain><br />
<br />
<displayName>Google Mail</displayName><br />
<displayShortName>GMail</displayShortName><br />
<br />
<incomingServer type="pop3"><br />
<hostname>pop.example.com</hostname><br />
<port>995</port><br />
<socketType>SSL</socketType><br />
<!-- "plain": no encryption<br />
"SSL": SSL 3 or TLS 1 on SSL-specific port<br />
"STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS<br />
--><br />
<username>%EMAILLOCALPART%</username><br />
<!-- "password-cleartext",<br />
"plain" (deprecated):<br />
Send password in the clear<br />
(dangerous, if SSL isn't used either).<br />
AUTH PLAIN, LOGIN or protocol-native login.<br />
"password-encrypted",<br />
"secure" (deprecated):<br />
A secure encrypted password mechanism.<br />
Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.<br />
"NTLM":<br />
Use NTLM (or NTLMv2 or successors),<br />
the Windows login mechanism.<br />
"GSSAPI":<br />
Use Kerberos / GSSAPI,<br />
a single-signon mechanism used for big sites.<br />
"client-IP-address":<br />
The server recognizes this user based on the IP address.<br />
No authentication needed, the server will require no username nor password.<br />
"TLS-client-cert":<br />
On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)<br />
"OAuth2":<br />
OAuth2. Works only on specific hardcoded servers, please see below. Should be added only as second alternative.<br />
"none":<br />
No authentication<br />
Compatibility note: Thunderbird 3.0 accepts only "plain" and "secure". It will ignore the whole XML file, if other values are given. --><br />
<authentication>password-cleartext</authentication><br />
<pop3><br />
<!-- remove the following and leave to client/user? --><br />
<leaveMessagesOnServer>true</leaveMessagesOnServer><br />
<downloadOnBiff>true</downloadOnBiff><br />
<daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer><br />
<!-- only for servers which don't allow checks more often --><br />
<checkInterval minutes="15"/><!-- not yet supported --><br />
</pop3><br />
<password>optional: the user's password</password><br />
</incomingServer><br />
<br />
<outgoingServer type="smtp"><br />
<hostname>smtp.googlemail.com</hostname><br />
<port>587</port><br />
<socketType>STARTTLS</socketType> <!-- see above --><br />
<username>%EMAILLOCALPART%</username> <!-- if smtp-auth --><br />
<!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.<br />
For values, see incoming.<br />
Additional options here:<br />
"SMTP-after-POP":<br />
authenticate to incoming mail server first<br />
before contacting the smtp server.<br />
Compatibility note: Thunderbird 3.0 accepts only "plain",<br />
"secure", "none", and "smtp-after-pop".<br />
It will ignore the whole XML file, if other values are given.<br />
--><br />
<authentication>password-cleartext</authentication><br />
<!-- If the server makes some additional requirements beyond<br />
<authentication>.<br />
"client-IP-address": The server is only reachable or works,<br />
if the user is in a certain IP network, e.g.<br />
the dialed into the ISP's network (DSL, cable, modem) or<br />
connected to a company network.<br />
Note: <authentication>client-IP-address</><br />
means that you may use the server without any auth.<br />
<authentication>password-cleartext</> *and*<br />
<restriction>client-IP-address</> means that you need to<br />
be in the correct IP network *and* (should) authenticate.<br />
Servers which do that are highly discouraged and<br />
should be avoided, see {{bug|556267}}.<br />
Not yet implemented. Spec (element name?) up to change.<br />
--><br />
<restriction>client-IP-address</restriction><br />
<!-- remove the following and leave to client/user? --><br />
<addThisServer>true</addThisServer><br />
<useGlobalPreferredServer>true</useGlobalPreferredServer><br />
<password>optional: the user's password</password><br />
</outgoingServer><br />
<br />
<identity><br />
<!-- needed? --><br />
<!-- We don't want Verizon setting "Organization: Verizon"<br />
for its customers --><br />
</identity><br />
<br />
<!-- see description. Not yet supported, see bug 564043. --><br />
<inputField key="USERNAME" label="Screen name"></inputField><br />
<inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField><br />
<br />
<!-- Add this only when users (who already have an account) have to<br />
do something manually before the account can work with IMAP/POP or SSL.<br />
Note: Per XML, & (ampersand) needs to be escaped to & a m p ;<br />
(without spaces).<br />
Not yet implemented, see bug 586364. --><br />
<enable<br />
visiturl="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"><br />
<instruction>Check 'Enable IMAP and POP' in Google settings page</instruction><br />
<instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction><br />
</enable><br />
<br />
<!-- A page where the ISP describes the configuration.<br />
This is purely informational and currently mainly for<br />
maintenance of the files and not used by the client at all.<br />
Note that we do not necessarily use exactly the config suggested<br />
by the ISP, e.g. when they don't recommend SSL, but it's available,<br />
we will configure SSL.<br />
The text content should contains a description in the native<br />
language of the ISP (customers), and a short English description,<br />
mostly for us.<br />
--><br />
<documentation url="http://www.example.com/help/mail/thunderbird"><br />
<descr lang="en">Configure Thunderbird 2.0 for IMAP</descr><br />
<descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr><br />
</documentation><br />
<br />
</emailProvider><br />
<br />
<!-- This allows to access the webmail service of the provider.<br />
The URLs are loaded into a standard webbrowser for the user.<br />
Specifying this is optional. --><br />
<webMail><br />
<!-- Webpage where the user has to log in manually by entering username<br />
and password himself.<br />
HTTPS required. --><br />
<loginPage url="https://mail.example.com/login/" /><br />
<br />
<!-- Same as loginAutomaticDOM, but the website makes checks that<br />
the user comes from the login page. So, open the login page<br />
in the browser, get the page's DOM, fill out name and password<br />
fields for the user, and trigger the login button.<br />
The login button might not be an HTML button, just a div, so<br />
to trigger it, send a click event to it.<br />
HTTPS is required for the URL. --><br />
<loginPageInfo url="https://mail.example.com/login/"><br />
<!-- What to fill into the usernameField.<br />
Format is the same as for <username> within <incomingServer>,<br />
including placeholders. See below for valid placeholders. --><br />
<username>%EMAILADDRESS%</username><br />
<!-- Allows to find the textfield on the page, to fill it out.<br />
The id attribute give the DOM ID,<br />
The name attribute give the DOM name attribute.<br />
One or both of id and name attributes must exist.<br />
Try the ID first (e.g. using getElementById()), if existing.<br />
Otherwise, try finding the element by name.<br />
Don't treat the IDs given in this XML file as trusted,<br />
but before using them, verify the format<br />
(e.g. only characters and digits for IDs).<br />
If you use powerful functions like jQuery, and the XML returns<br />
you code in the username ID, and you feed it unchecked to jQuery,<br />
it may be executed. --><br />
<usernameField id="email_field" name="email" /><br />
<passwordField name="password" /><br />
<!-- The submit button to trigger the server submit<br />
after filling in the fields.<br />
id and name attributes: See <usernameField> --><br />
<loginButton id="submit_button" name="login"/><br />
</loginPageInfo><br />
</webMail><br />
<br />
<clientConfigUpdate url="https://www.example.com/config/mozilla.xml" /><br />
<br />
</clientConfig><br />
</pre><br />
<br />
= Multiple servers =<br />
<br />
incomingServer and outgoingServer may appear several times. They are in order of priority, the first entry should generally be used, unless there's a specific factor or policy which prefers a later config.<br />
<br />
For example, there may be configs with STARTTLS and normal SSL. Use the first entry listed. If that fails (server config change), you can try the second config. If IMAP and POP3 servers both exist, then both should be listed; the client or end user can select the protocol which best suits its needs. The config/ISP can, however, express a preference for IMAP or POP3 by what is listed first in the config file.<br />
<br />
= Placeholders =<br />
<br />
The email address (before @ or with domain) that the user entered can be used as placeholder in the config file, so the file is the same for all users (i.e. static).<br />
<br />
Placeholders:<br />
* %EMAILADDRESS% (full email address of the user, usually entered by the user)<br />
* %EMAILLOCALPART% (email address, part before @)<br />
* %EMAILDOMAIN% (email address, part after @)<br />
* %REALNAME% (needed?)<br />
* The key (surrounded by %) in <inputfield key=""> (see below)<br />
<br />
These placeholders can be used as value or value part in most settings which take a string.<br />
<br />
= User input fields =<br />
<br />
(not yet implemented, see [https://bugzilla.mozilla.org/show_bug.cgi?id=564043 bug 564043])<br />
<br />
For some ISPs, the IMPA/POP/SMTP username (and maybe other fields) has no relation to the email address and has to be entered separately. E.g. Email address is ben.bucksch@wong.com (chosen by user), but username is G675476 (provided by ISP).<br />
<br />
In this case, an <inputfield> can be added for the username. It will let the client show a textfield to the user. The user-visible label is the one provided in the <inputfield label=""> attribute, to allow the ISP to use custom terminology for "username". The label is not localizable, that would be too complicated and most ISPs are local anyways - if really important, the ISP config server can look at the HTTP headers during the fetch.<br />
<br />
The text that the user entered is written into a placeholder %KEY%, where KEY is the content of the <inputfield key="KEY"> attribute and must be only upper case letters. The placeholder can then be used in other settings, see [[#Placeholders]] above.<br />
<br />
For example, a config file entry<br />
<userinput label="Username" key="%USERNAME%">D123456</userinput><br />
would result in a UI like:<br />
Username: [ ] example: D123456<br />
and cound be used elsewhere in the config file like:<br />
<username>%USERNAME%</username><br />
and if the user enters "D32198", it would be automatically filled in like:<br />
<username>D32198</username><br />
i.e. using D32198 as username for IMAP, POP or SMTP.<br />
<br />
The system is generic, so that it can in theory be used for other values as well. No other such purpose is currently known, apart from a separate POP and SMTP username maybe. It should not be used to let the user supply hostnames, as that would defeat the purpose of the autoconfig and be worse than the manual config UI provided by the client.<br />
<br />
= OAuth2 =<br />
<br />
Due to a defficiency in the OAuth2 spec, the client is usually required to send a client credential key, which in turn requires the client to be registered and approved by the email provider. Unfortunately, this not only allows email providers to block specific email clients (which is contrary to the idea of Open-Source), but also makes it impossible to support arbitrary OAuth2 servers. That's why Thunderbird is forced to hardcode the servers that it supports and the respecive client keys. That means that you cannot use OAuth2 for your own server. Only the servers listed on [https://searchfox.org/comm-central/source/mailnews/base/src/OAuth2Providers.jsm OAuth2Providers.jsm] will work.<br />
<br />
A server using OAuth2 auth looks this:<br />
<pre><br />
<incomingServer type="imap"><br />
<hostname>imap.gmail.com</hostname><br />
<port>993</port><br />
<socketType>SSL</socketType><br />
<username>%EMAILADDRESS%</username><br />
<authentication>OAuth2</authentication><br />
<authentication>password-cleartext</authentication><br />
<oAuth2><br />
<issuer>login.yahoo.com<issuer><br />
<scope>mail-w<scope><br />
<authURL>https://api.login.yahoo.com/oauth2/request_auth</authURL><br />
<tokenURL>https://api.login.yahoo.com/oauth2/get_token</tokenURL><br />
<oAuth2><br />
</incomingServer><br />
</pre><br />
<br />
Note that the `<oAuth2>` contents are not yet supported by Thunderbird. They are planned to be supported later, removing the need to hardcode these parameters. As of today, `<authentication>OAuth2</authentication>` is supported.<br />
<br />
Note that there are two `<authentication>` elements. This allows a fallback, in case a client does not support OAuth2 or does not have a client key for this OAuth2 issuer and therefore cannot authenticate with this issuer.<br />
<br />
= TODO =<br />
<br />
* Values specific to IMAP, e.g. bug 558659 (special folders), bug 572465 (subfolders) etc.. However, most of these can and should be done as IMAP extensions.<br />
* All settings and enum values</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration:ConfigFileFormat&diff=1232887Thunderbird:Autoconfiguration:ConfigFileFormat2021-01-02T03:33:46Z<p>BenB: /* OAuth2 */ Stay consistent in capitalization</p>
<hr />
<div>Author: [[User:BenB|Ben Bucksch]]. Please do not change this doc without checking with the author.<br />
<br />
This page is the authorative specification of the config file that the Mozilla ISPDB and config services at ISPs return.<br />
<br />
It is XML, with a clearly defined format, to be stable and usable by other mail clients, too. Update Aug 2010: In fact, [http://projects.gnome.org/evolution/ Evolution] and [http://userbase.kde.org/KMail KMail] and [http://www.kontact.org Kontact] now use it, too.<br />
<br />
= Description =<br />
<br />
* [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Description of the different mechanisms to serve the configuration file]<br />
* [https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo How to create your own config file]<br />
<br />
= XML =<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<clientConfig version="1.1"><br />
<emailProvider id="example.com"><br />
<domain>example.com</domain><br />
<domain>example.net</domain><br />
<br />
<displayName>Google Mail</displayName><br />
<displayShortName>GMail</displayShortName><br />
<br />
<incomingServer type="pop3"><br />
<hostname>pop.example.com</hostname><br />
<port>995</port><br />
<socketType>SSL</socketType><br />
<!-- "plain": no encryption<br />
"SSL": SSL 3 or TLS 1 on SSL-specific port<br />
"STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS<br />
--><br />
<username>%EMAILLOCALPART%</username><br />
<!-- "password-cleartext",<br />
"plain" (deprecated):<br />
Send password in the clear<br />
(dangerous, if SSL isn't used either).<br />
AUTH PLAIN, LOGIN or protocol-native login.<br />
"password-encrypted",<br />
"secure" (deprecated):<br />
A secure encrypted password mechanism.<br />
Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.<br />
"NTLM":<br />
Use NTLM (or NTLMv2 or successors),<br />
the Windows login mechanism.<br />
"GSSAPI":<br />
Use Kerberos / GSSAPI,<br />
a single-signon mechanism used for big sites.<br />
"client-IP-address":<br />
The server recognizes this user based on the IP address.<br />
No authentication needed, the server will require no username nor password.<br />
"TLS-client-cert":<br />
On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)<br />
"OAuth2":<br />
OAuth2. Works only on specific hardcoded servers, please see below. Should be added only as second alternative.<br />
"none":<br />
No authentication<br />
Compatibility note: Thunderbird 3.0 accepts only "plain" and "secure". It will ignore the whole XML file, if other values are given. --><br />
<authentication>password-cleartext</authentication><br />
<pop3><br />
<!-- remove the following and leave to client/user? --><br />
<leaveMessagesOnServer>true</leaveMessagesOnServer><br />
<downloadOnBiff>true</downloadOnBiff><br />
<daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer><br />
<!-- only for servers which don't allow checks more often --><br />
<checkInterval minutes="15"/><!-- not yet supported --><br />
</pop3><br />
<password>optional: the user's password</password><br />
</incomingServer><br />
<br />
<outgoingServer type="smtp"><br />
<hostname>smtp.googlemail.com</hostname><br />
<port>587</port><br />
<socketType>STARTTLS</socketType> <!-- see above --><br />
<username>%EMAILLOCALPART%</username> <!-- if smtp-auth --><br />
<!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.<br />
For values, see incoming.<br />
Additional options here:<br />
"SMTP-after-POP":<br />
authenticate to incoming mail server first<br />
before contacting the smtp server.<br />
Compatibility note: Thunderbird 3.0 accepts only "plain",<br />
"secure", "none", and "smtp-after-pop".<br />
It will ignore the whole XML file, if other values are given.<br />
--><br />
<authentication>password-cleartext</authentication><br />
<!-- If the server makes some additional requirements beyond<br />
<authentication>.<br />
"client-IP-address": The server is only reachable or works,<br />
if the user is in a certain IP network, e.g.<br />
the dialed into the ISP's network (DSL, cable, modem) or<br />
connected to a company network.<br />
Note: <authentication>client-IP-address</><br />
means that you may use the server without any auth.<br />
<authentication>password-cleartext</> *and*<br />
<restriction>client-IP-address</> means that you need to<br />
be in the correct IP network *and* (should) authenticate.<br />
Servers which do that are highly discouraged and<br />
should be avoided, see {{bug|556267}}.<br />
Not yet implemented. Spec (element name?) up to change.<br />
--><br />
<restriction>client-IP-address</restriction><br />
<!-- remove the following and leave to client/user? --><br />
<addThisServer>true</addThisServer><br />
<useGlobalPreferredServer>true</useGlobalPreferredServer><br />
<password>optional: the user's password</password><br />
</outgoingServer><br />
<br />
<identity><br />
<!-- needed? --><br />
<!-- We don't want Verizon setting "Organization: Verizon"<br />
for its customers --><br />
</identity><br />
<br />
<!-- see description. Not yet supported, see bug 564043. --><br />
<inputField key="USERNAME" label="Screen name"></inputField><br />
<inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField><br />
<br />
<!-- Add this only when users (who already have an account) have to<br />
do something manually before the account can work with IMAP/POP or SSL.<br />
Note: Per XML, & (ampersand) needs to be escaped to & a m p ;<br />
(without spaces).<br />
Not yet implemented, see bug 586364. --><br />
<enable<br />
visiturl="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"><br />
<instruction>Check 'Enable IMAP and POP' in Google settings page</instruction><br />
<instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction><br />
</enable><br />
<br />
<!-- A page where the ISP describes the configuration.<br />
This is purely informational and currently mainly for<br />
maintenance of the files and not used by the client at all.<br />
Note that we do not necessarily use exactly the config suggested<br />
by the ISP, e.g. when they don't recommend SSL, but it's available,<br />
we will configure SSL.<br />
The text content should contains a description in the native<br />
language of the ISP (customers), and a short English description,<br />
mostly for us.<br />
--><br />
<documentation url="http://www.example.com/help/mail/thunderbird"><br />
<descr lang="en">Configure Thunderbird 2.0 for IMAP</descr><br />
<descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr><br />
</documentation><br />
<br />
</emailProvider><br />
<br />
<!-- This allows to access the webmail service of the provider.<br />
The URLs are loaded into a standard webbrowser for the user.<br />
Specifying this is optional. --><br />
<webMail><br />
<!-- Webpage where the user has to log in manually by entering username<br />
and password himself.<br />
HTTPS required. --><br />
<loginPage url="https://mail.example.com/login/" /><br />
<br />
<!-- Same as loginAutomaticDOM, but the website makes checks that<br />
the user comes from the login page. So, open the login page<br />
in the browser, get the page's DOM, fill out name and password<br />
fields for the user, and trigger the login button.<br />
The login button might not be an HTML button, just a div, so<br />
to trigger it, send a click event to it.<br />
HTTPS is required for the URL. --><br />
<loginPageInfo url="https://mail.example.com/login/"><br />
<!-- What to fill into the usernameField.<br />
Format is the same as for <username> within <incomingServer>,<br />
including placeholders. See below for valid placeholders. --><br />
<username>%EMAILADDRESS%</username><br />
<!-- Allows to find the textfield on the page, to fill it out.<br />
The id attribute give the DOM ID,<br />
The name attribute give the DOM name attribute.<br />
One or both of id and name attributes must exist.<br />
Try the ID first (e.g. using getElementById()), if existing.<br />
Otherwise, try finding the element by name.<br />
Don't treat the IDs given in this XML file as trusted,<br />
but before using them, verify the format<br />
(e.g. only characters and digits for IDs).<br />
If you use powerful functions like jQuery, and the XML returns<br />
you code in the username ID, and you feed it unchecked to jQuery,<br />
it may be executed. --><br />
<usernameField id="email_field" name="email" /><br />
<passwordField name="password" /><br />
<!-- The submit button to trigger the server submit<br />
after filling in the fields.<br />
id and name attributes: See <usernameField> --><br />
<loginButton id="submit_button" name="login"/><br />
</loginPageInfo><br />
</webMail><br />
<br />
<clientConfigUpdate url="https://www.example.com/config/mozilla.xml" /><br />
<br />
</clientConfig><br />
</pre><br />
<br />
= Multiple servers =<br />
<br />
incomingServer and outgoingServer may appear several times. They are in order of priority, the first entry should generally be used, unless there's a specific factor or policy which prefers a later config.<br />
<br />
For example, there may be configs with STARTTLS and normal SSL. Use the first entry listed. If that fails (server config change), you can try the second config. If IMAP and POP3 servers both exist, then both should be listed; the client or end user can select the protocol which best suits its needs. The config/ISP can, however, express a preference for IMAP or POP3 by what is listed first in the config file.<br />
<br />
= Placeholders =<br />
<br />
The email address (before @ or with domain) that the user entered can be used as placeholder in the config file, so the file is the same for all users (i.e. static).<br />
<br />
Placeholders:<br />
* %EMAILADDRESS% (full email address of the user, usually entered by the user)<br />
* %EMAILLOCALPART% (email address, part before @)<br />
* %EMAILDOMAIN% (email address, part after @)<br />
* %REALNAME% (needed?)<br />
* The key (surrounded by %) in <inputfield key=""> (see below)<br />
<br />
These placeholders can be used as value or value part in most settings which take a string.<br />
<br />
= User input fields =<br />
<br />
(not yet implemented, see [https://bugzilla.mozilla.org/show_bug.cgi?id=564043 bug 564043])<br />
<br />
For some ISPs, the IMPA/POP/SMTP username (and maybe other fields) has no relation to the email address and has to be entered separately. E.g. Email address is ben.bucksch@wong.com (chosen by user), but username is G675476 (provided by ISP).<br />
<br />
In this case, an <inputfield> can be added for the username. It will let the client show a textfield to the user. The user-visible label is the one provided in the <inputfield label=""> attribute, to allow the ISP to use custom terminology for "username". The label is not localizable, that would be too complicated and most ISPs are local anyways - if really important, the ISP config server can look at the HTTP headers during the fetch.<br />
<br />
The text that the user entered is written into a placeholder %KEY%, where KEY is the content of the <inputfield key="KEY"> attribute and must be only upper case letters. The placeholder can then be used in other settings, see [[#Placeholders]] above.<br />
<br />
For example, a config file entry<br />
<userinput label="Username" key="%USERNAME%">D123456</userinput><br />
would result in a UI like:<br />
Username: [ ] example: D123456<br />
and cound be used elsewhere in the config file like:<br />
<username>%USERNAME%</username><br />
and if the user enters "D32198", it would be automatically filled in like:<br />
<username>D32198</username><br />
i.e. using D32198 as username for IMAP, POP or SMTP.<br />
<br />
The system is generic, so that it can in theory be used for other values as well. No other such purpose is currently known, apart from a separate POP and SMTP username maybe. It should not be used to let the user supply hostnames, as that would defeat the purpose of the autoconfig and be worse than the manual config UI provided by the client.<br />
<br />
= OAuth2 =<br />
<br />
Due to a defficiency in the OAuth2 spec, the client is usually required to send a client credential key, which in turn requires the client to be registered and approved by the email provider. Unfortunately, this not only allows email providers to block specific email clients (which is contrary to the idea of Open-Source), but also makes it impossible to support arbitrary OAuth2 servers. That's why Thunderbird is forced to hardcode the servers that it supports and the respecive client keys. That means that you cannot use OAuth2 for your own server. Only the servers listed on [https://searchfox.org/comm-central/source/mailnews/base/src/OAuth2Providers.jsm OAuth2Providers.jsm] will work.<br />
<br />
A server using OAuth2 auth looks this:<br />
<pre><br />
<incomingServer type="imap"><br />
<hostname>imap.gmail.com</hostname><br />
<port>993</port><br />
<socketType>SSL</socketType><br />
<username>%EMAILADDRESS%</username><br />
<authentication>OAuth2</authentication><br />
<authentication>password-cleartext</authentication><br />
<oAuth><br />
<issuer>login.yahoo.com<issuer><br />
<scope>mail-w<scope><br />
<authURL>https://api.login.yahoo.com/oauth2/request_auth</authURL><br />
<tokenURL>https://api.login.yahoo.com/oauth2/get_token</tokenURL><br />
<oAuth><br />
</incomingServer><br />
</pre><br />
<br />
Note that the `<oAuth>` contents are not yet supported by Thunderbird. They are planned to be supported later, removing the need to hardcode these parameters. As of today, `<authentication>OAuth2</authentication>` is supported.<br />
<br />
Note that there are two `<authentication>` elements. This allows a fallback, in case a client does not support OAuth2 or does not have a client key for this OAuth2 issuer and therefore cannot authenticate with this issuer.<br />
<br />
= TODO =<br />
<br />
* Values specific to IMAP, e.g. bug 558659 (special folders), bug 572465 (subfolders) etc.. However, most of these can and should be done as IMAP extensions.<br />
* All settings and enum values</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration:ConfigFileFormat&diff=1232886Thunderbird:Autoconfiguration:ConfigFileFormat2021-01-02T03:26:59Z<p>BenB: Document OAuth2, status quo and where we should be, and limitations of the OAuth2 spec</p>
<hr />
<div>Author: [[User:BenB|Ben Bucksch]]. Please do not change this doc without checking with the author.<br />
<br />
This page is the authorative specification of the config file that the Mozilla ISPDB and config services at ISPs return.<br />
<br />
It is XML, with a clearly defined format, to be stable and usable by other mail clients, too. Update Aug 2010: In fact, [http://projects.gnome.org/evolution/ Evolution] and [http://userbase.kde.org/KMail KMail] and [http://www.kontact.org Kontact] now use it, too.<br />
<br />
= Description =<br />
<br />
* [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Description of the different mechanisms to serve the configuration file]<br />
* [https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo How to create your own config file]<br />
<br />
= XML =<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<clientConfig version="1.1"><br />
<emailProvider id="example.com"><br />
<domain>example.com</domain><br />
<domain>example.net</domain><br />
<br />
<displayName>Google Mail</displayName><br />
<displayShortName>GMail</displayShortName><br />
<br />
<incomingServer type="pop3"><br />
<hostname>pop.example.com</hostname><br />
<port>995</port><br />
<socketType>SSL</socketType><br />
<!-- "plain": no encryption<br />
"SSL": SSL 3 or TLS 1 on SSL-specific port<br />
"STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS<br />
--><br />
<username>%EMAILLOCALPART%</username><br />
<!-- "password-cleartext",<br />
"plain" (deprecated):<br />
Send password in the clear<br />
(dangerous, if SSL isn't used either).<br />
AUTH PLAIN, LOGIN or protocol-native login.<br />
"password-encrypted",<br />
"secure" (deprecated):<br />
A secure encrypted password mechanism.<br />
Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.<br />
"NTLM":<br />
Use NTLM (or NTLMv2 or successors),<br />
the Windows login mechanism.<br />
"GSSAPI":<br />
Use Kerberos / GSSAPI,<br />
a single-signon mechanism used for big sites.<br />
"client-IP-address":<br />
The server recognizes this user based on the IP address.<br />
No authentication needed, the server will require no username nor password.<br />
"TLS-client-cert":<br />
On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)<br />
"OAuth2":<br />
OAuth2. Works only on specific hardcoded servers, please see below. Should be added only as second alternative.<br />
"none":<br />
No authentication<br />
Compatibility note: Thunderbird 3.0 accepts only "plain" and "secure". It will ignore the whole XML file, if other values are given. --><br />
<authentication>password-cleartext</authentication><br />
<pop3><br />
<!-- remove the following and leave to client/user? --><br />
<leaveMessagesOnServer>true</leaveMessagesOnServer><br />
<downloadOnBiff>true</downloadOnBiff><br />
<daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer><br />
<!-- only for servers which don't allow checks more often --><br />
<checkInterval minutes="15"/><!-- not yet supported --><br />
</pop3><br />
<password>optional: the user's password</password><br />
</incomingServer><br />
<br />
<outgoingServer type="smtp"><br />
<hostname>smtp.googlemail.com</hostname><br />
<port>587</port><br />
<socketType>STARTTLS</socketType> <!-- see above --><br />
<username>%EMAILLOCALPART%</username> <!-- if smtp-auth --><br />
<!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.<br />
For values, see incoming.<br />
Additional options here:<br />
"SMTP-after-POP":<br />
authenticate to incoming mail server first<br />
before contacting the smtp server.<br />
Compatibility note: Thunderbird 3.0 accepts only "plain",<br />
"secure", "none", and "smtp-after-pop".<br />
It will ignore the whole XML file, if other values are given.<br />
--><br />
<authentication>password-cleartext</authentication><br />
<!-- If the server makes some additional requirements beyond<br />
<authentication>.<br />
"client-IP-address": The server is only reachable or works,<br />
if the user is in a certain IP network, e.g.<br />
the dialed into the ISP's network (DSL, cable, modem) or<br />
connected to a company network.<br />
Note: <authentication>client-IP-address</><br />
means that you may use the server without any auth.<br />
<authentication>password-cleartext</> *and*<br />
<restriction>client-IP-address</> means that you need to<br />
be in the correct IP network *and* (should) authenticate.<br />
Servers which do that are highly discouraged and<br />
should be avoided, see {{bug|556267}}.<br />
Not yet implemented. Spec (element name?) up to change.<br />
--><br />
<restriction>client-IP-address</restriction><br />
<!-- remove the following and leave to client/user? --><br />
<addThisServer>true</addThisServer><br />
<useGlobalPreferredServer>true</useGlobalPreferredServer><br />
<password>optional: the user's password</password><br />
</outgoingServer><br />
<br />
<identity><br />
<!-- needed? --><br />
<!-- We don't want Verizon setting "Organization: Verizon"<br />
for its customers --><br />
</identity><br />
<br />
<!-- see description. Not yet supported, see bug 564043. --><br />
<inputField key="USERNAME" label="Screen name"></inputField><br />
<inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField><br />
<br />
<!-- Add this only when users (who already have an account) have to<br />
do something manually before the account can work with IMAP/POP or SSL.<br />
Note: Per XML, & (ampersand) needs to be escaped to & a m p ;<br />
(without spaces).<br />
Not yet implemented, see bug 586364. --><br />
<enable<br />
visiturl="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"><br />
<instruction>Check 'Enable IMAP and POP' in Google settings page</instruction><br />
<instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction><br />
</enable><br />
<br />
<!-- A page where the ISP describes the configuration.<br />
This is purely informational and currently mainly for<br />
maintenance of the files and not used by the client at all.<br />
Note that we do not necessarily use exactly the config suggested<br />
by the ISP, e.g. when they don't recommend SSL, but it's available,<br />
we will configure SSL.<br />
The text content should contains a description in the native<br />
language of the ISP (customers), and a short English description,<br />
mostly for us.<br />
--><br />
<documentation url="http://www.example.com/help/mail/thunderbird"><br />
<descr lang="en">Configure Thunderbird 2.0 for IMAP</descr><br />
<descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr><br />
</documentation><br />
<br />
</emailProvider><br />
<br />
<!-- This allows to access the webmail service of the provider.<br />
The URLs are loaded into a standard webbrowser for the user.<br />
Specifying this is optional. --><br />
<webMail><br />
<!-- Webpage where the user has to log in manually by entering username<br />
and password himself.<br />
HTTPS required. --><br />
<loginPage url="https://mail.example.com/login/" /><br />
<br />
<!-- Same as loginAutomaticDOM, but the website makes checks that<br />
the user comes from the login page. So, open the login page<br />
in the browser, get the page's DOM, fill out name and password<br />
fields for the user, and trigger the login button.<br />
The login button might not be an HTML button, just a div, so<br />
to trigger it, send a click event to it.<br />
HTTPS is required for the URL. --><br />
<loginPageInfo url="https://mail.example.com/login/"><br />
<!-- What to fill into the usernameField.<br />
Format is the same as for <username> within <incomingServer>,<br />
including placeholders. See below for valid placeholders. --><br />
<username>%EMAILADDRESS%</username><br />
<!-- Allows to find the textfield on the page, to fill it out.<br />
The id attribute give the DOM ID,<br />
The name attribute give the DOM name attribute.<br />
One or both of id and name attributes must exist.<br />
Try the ID first (e.g. using getElementById()), if existing.<br />
Otherwise, try finding the element by name.<br />
Don't treat the IDs given in this XML file as trusted,<br />
but before using them, verify the format<br />
(e.g. only characters and digits for IDs).<br />
If you use powerful functions like jQuery, and the XML returns<br />
you code in the username ID, and you feed it unchecked to jQuery,<br />
it may be executed. --><br />
<usernameField id="email_field" name="email" /><br />
<passwordField name="password" /><br />
<!-- The submit button to trigger the server submit<br />
after filling in the fields.<br />
id and name attributes: See <usernameField> --><br />
<loginButton id="submit_button" name="login"/><br />
</loginPageInfo><br />
</webMail><br />
<br />
<clientConfigUpdate url="https://www.example.com/config/mozilla.xml" /><br />
<br />
</clientConfig><br />
</pre><br />
<br />
= Multiple servers =<br />
<br />
incomingServer and outgoingServer may appear several times. They are in order of priority, the first entry should generally be used, unless there's a specific factor or policy which prefers a later config.<br />
<br />
For example, there may be configs with STARTTLS and normal SSL. Use the first entry listed. If that fails (server config change), you can try the second config. If IMAP and POP3 servers both exist, then both should be listed; the client or end user can select the protocol which best suits its needs. The config/ISP can, however, express a preference for IMAP or POP3 by what is listed first in the config file.<br />
<br />
= Placeholders =<br />
<br />
The email address (before @ or with domain) that the user entered can be used as placeholder in the config file, so the file is the same for all users (i.e. static).<br />
<br />
Placeholders:<br />
* %EMAILADDRESS% (full email address of the user, usually entered by the user)<br />
* %EMAILLOCALPART% (email address, part before @)<br />
* %EMAILDOMAIN% (email address, part after @)<br />
* %REALNAME% (needed?)<br />
* The key (surrounded by %) in <inputfield key=""> (see below)<br />
<br />
These placeholders can be used as value or value part in most settings which take a string.<br />
<br />
= User input fields =<br />
<br />
(not yet implemented, see [https://bugzilla.mozilla.org/show_bug.cgi?id=564043 bug 564043])<br />
<br />
For some ISPs, the IMPA/POP/SMTP username (and maybe other fields) has no relation to the email address and has to be entered separately. E.g. Email address is ben.bucksch@wong.com (chosen by user), but username is G675476 (provided by ISP).<br />
<br />
In this case, an <inputfield> can be added for the username. It will let the client show a textfield to the user. The user-visible label is the one provided in the <inputfield label=""> attribute, to allow the ISP to use custom terminology for "username". The label is not localizable, that would be too complicated and most ISPs are local anyways - if really important, the ISP config server can look at the HTTP headers during the fetch.<br />
<br />
The text that the user entered is written into a placeholder %KEY%, where KEY is the content of the <inputfield key="KEY"> attribute and must be only upper case letters. The placeholder can then be used in other settings, see [[#Placeholders]] above.<br />
<br />
For example, a config file entry<br />
<userinput label="Username" key="%USERNAME%">D123456</userinput><br />
would result in a UI like:<br />
Username: [ ] example: D123456<br />
and cound be used elsewhere in the config file like:<br />
<username>%USERNAME%</username><br />
and if the user enters "D32198", it would be automatically filled in like:<br />
<username>D32198</username><br />
i.e. using D32198 as username for IMAP, POP or SMTP.<br />
<br />
The system is generic, so that it can in theory be used for other values as well. No other such purpose is currently known, apart from a separate POP and SMTP username maybe. It should not be used to let the user supply hostnames, as that would defeat the purpose of the autoconfig and be worse than the manual config UI provided by the client.<br />
<br />
= OAuth2 =<br />
<br />
Due to a defficiency in the OAuth2 spec, the client is usually required to send a client credential key, which in turn requires the client to be registered and approved by the email provider. Unfortunately, this not only allows email providers to block specific email clients (which is contrary to the idea of Open-Source), but also makes it impossible to support arbitrary OAuth2 servers. That's why Thunderbird is forced to hardcode the servers that it supports and the respecive client keys. That means that you cannot use OAuth2 for your own server. Only the servers listed on [https://searchfox.org/comm-central/source/mailnews/base/src/OAuth2Providers.jsm OAuth2Providers.jsm] will work.<br />
<br />
A server using OAuth2 auth looks this:<br />
<pre><br />
<incomingServer type="imap"><br />
<hostname>imap.gmail.com</hostname><br />
<port>993</port><br />
<socketType>SSL</socketType><br />
<username>%EMAILADDRESS%</username><br />
<authentication>OAuth2</authentication><br />
<authentication>password-cleartext</authentication><br />
<oauth><br />
<issuer>login.yahoo.com<issuer><br />
<scope>mail-w<scope><br />
<authURL>https://api.login.yahoo.com/oauth2/request_auth</authURL><br />
<tokenURL>https://api.login.yahoo.com/oauth2/get_token</tokenURL><br />
<oauth><br />
</incomingServer><br />
</pre><br />
<br />
Note that the `<oauth>` contents are not yet supported by Thunderbird. They are planned to be supported later, removing the need to hardcode these parameters. As of today, `<authentication>OAuth2</authentication>` is supported.<br />
<br />
Note that there are two `<authentication>` elements. This allows a fallback, in case a client does not support OAuth2 or does not have a client key for this OAuth2 issuer and therefore cannot authenticate with this issuer.<br />
<br />
= TODO =<br />
<br />
* Values specific to IMAP, e.g. bug 558659 (special folders), bug 572465 (subfolders) etc.. However, most of these can and should be done as IMAP extensions.<br />
* All settings and enum values</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration:ConfigFileFormat&diff=1227306Thunderbird:Autoconfiguration:ConfigFileFormat2020-05-18T16:49:05Z<p>BenB: Link the other documents with more link text, making them more prominent</p>
<hr />
<div>Author: [[User:BenB|Ben Bucksch]]. Please do not change this doc without checking with the author.<br />
<br />
This page is the authorative specification of the config file that the Mozilla ISPDB and config services at ISPs return.<br />
<br />
It is XML, with a clearly defined format, to be stable and usable by other mail clients, too. Update Aug 2010: In fact, [http://projects.gnome.org/evolution/ Evolution] and [http://userbase.kde.org/KMail KMail] and [http://www.kontact.org Kontact] now use it, too.<br />
<br />
= Description =<br />
<br />
* [https://developer.mozilla.org/en/Thunderbird/Autoconfiguration Description of the different mechanisms to serve the configuration file]<br />
* [https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration/FileFormat/HowTo How to create your own config file]<br />
<br />
= XML =<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<clientConfig version="1.1"><br />
<emailProvider id="example.com"><br />
<domain>example.com</domain><br />
<domain>example.net</domain><br />
<br />
<displayName>Google Mail</displayName><br />
<displayShortName>GMail</displayShortName><br />
<br />
<incomingServer type="pop3"><br />
<hostname>pop.example.com</hostname><br />
<port>995</port><br />
<socketType>SSL</socketType><br />
<!-- "plain": no encryption<br />
"SSL": SSL 3 or TLS 1 on SSL-specific port<br />
"STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS<br />
--><br />
<username>%EMAILLOCALPART%</username><br />
<!-- "password-cleartext",<br />
"plain" (deprecated):<br />
Send password in the clear<br />
(dangerous, if SSL isn't used either).<br />
AUTH PLAIN, LOGIN or protocol-native login.<br />
"password-encrypted",<br />
"secure" (deprecated):<br />
A secure encrypted password mechanism.<br />
Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.<br />
"NTLM":<br />
Use NTLM (or NTLMv2 or successors),<br />
the Windows login mechanism.<br />
"GSSAPI":<br />
Use Kerberos / GSSAPI,<br />
a single-signon mechanism used for big sites.<br />
"client-IP-address":<br />
The server recognizes this user based on the IP address.<br />
No authentication needed, the server will require no username nor password.<br />
"TLS-client-cert":<br />
On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)<br />
"none":<br />
No authentication<br />
Compatibility note: Thunderbird 3.0 accepts only "plain" and "secure". It will ignore the whole XML file, if other values are given. --><br />
<authentication>password-cleartext</authentication><br />
<pop3><br />
<!-- remove the following and leave to client/user? --><br />
<leaveMessagesOnServer>true</leaveMessagesOnServer><br />
<downloadOnBiff>true</downloadOnBiff><br />
<daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer><br />
<!-- only for servers which don't allow checks more often --><br />
<checkInterval minutes="15"/><!-- not yet supported --><br />
</pop3><br />
<password>optional: the user's password</password><br />
</incomingServer><br />
<br />
<outgoingServer type="smtp"><br />
<hostname>smtp.googlemail.com</hostname><br />
<port>587</port><br />
<socketType>STARTTLS</socketType> <!-- see above --><br />
<username>%EMAILLOCALPART%</username> <!-- if smtp-auth --><br />
<!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.<br />
For values, see incoming.<br />
Additional options here:<br />
"SMTP-after-POP":<br />
authenticate to incoming mail server first<br />
before contacting the smtp server.<br />
Compatibility note: Thunderbird 3.0 accepts only "plain",<br />
"secure", "none", and "smtp-after-pop".<br />
It will ignore the whole XML file, if other values are given.<br />
--><br />
<authentication>password-cleartext</authentication><br />
<!-- If the server makes some additional requirements beyond<br />
<authentication>.<br />
"client-IP-address": The server is only reachable or works,<br />
if the user is in a certain IP network, e.g.<br />
the dialed into the ISP's network (DSL, cable, modem) or<br />
connected to a company network.<br />
Note: <authentication>client-IP-address</><br />
means that you may use the server without any auth.<br />
<authentication>password-cleartext</> *and*<br />
<restriction>client-IP-address</> means that you need to<br />
be in the correct IP network *and* (should) authenticate.<br />
Servers which do that are highly discouraged and<br />
should be avoided, see {{bug|556267}}.<br />
Not yet implemented. Spec (element name?) up to change.<br />
--><br />
<restriction>client-IP-address</restriction><br />
<!-- remove the following and leave to client/user? --><br />
<addThisServer>true</addThisServer><br />
<useGlobalPreferredServer>true</useGlobalPreferredServer><br />
<password>optional: the user's password</password><br />
</outgoingServer><br />
<br />
<identity><br />
<!-- needed? --><br />
<!-- We don't want Verizon setting "Organization: Verizon"<br />
for its customers --><br />
</identity><br />
<br />
<!-- see description. Not yet supported, see bug 564043. --><br />
<inputField key="USERNAME" label="Screen name"></inputField><br />
<inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField><br />
<br />
<!-- Add this only when users (who already have an account) have to<br />
do something manually before the account can work with IMAP/POP or SSL.<br />
Note: Per XML, & (ampersand) needs to be escaped to & a m p ;<br />
(without spaces).<br />
Not yet implemented, see bug 586364. --><br />
<enable<br />
visiturl="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"><br />
<instruction>Check 'Enable IMAP and POP' in Google settings page</instruction><br />
<instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction><br />
</enable><br />
<br />
<!-- A page where the ISP describes the configuration.<br />
This is purely informational and currently mainly for<br />
maintenance of the files and not used by the client at all.<br />
Note that we do not necessarily use exactly the config suggested<br />
by the ISP, e.g. when they don't recommend SSL, but it's available,<br />
we will configure SSL.<br />
The text content should contains a description in the native<br />
language of the ISP (customers), and a short English description,<br />
mostly for us.<br />
--><br />
<documentation url="http://www.example.com/help/mail/thunderbird"><br />
<descr lang="en">Configure Thunderbird 2.0 for IMAP</descr><br />
<descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr><br />
</documentation><br />
<br />
</emailProvider><br />
<br />
<!-- This allows to access the webmail service of the provider.<br />
The URLs are loaded into a standard webbrowser for the user.<br />
Specifying this is optional. --><br />
<webMail><br />
<!-- Webpage where the user has to log in manually by entering username<br />
and password himself.<br />
HTTPS required. --><br />
<loginPage url="https://mail.example.com/login/" /><br />
<br />
<!-- Same as loginAutomaticDOM, but the website makes checks that<br />
the user comes from the login page. So, open the login page<br />
in the browser, get the page's DOM, fill out name and password<br />
fields for the user, and trigger the login button.<br />
The login button might not be an HTML button, just a div, so<br />
to trigger it, send a click event to it.<br />
HTTPS is required for the URL. --><br />
<loginPageInfo url="https://mail.example.com/login/"><br />
<!-- What to fill into the usernameField.<br />
Format is the same as for <username> within <incomingServer>,<br />
including placeholders. See below for valid placeholders. --><br />
<username>%EMAILADDRESS%</username><br />
<!-- Allows to find the textfield on the page, to fill it out.<br />
The id attribute give the DOM ID,<br />
The name attribute give the DOM name attribute.<br />
One or both of id and name attributes must exist.<br />
Try the ID first (e.g. using getElementById()), if existing.<br />
Otherwise, try finding the element by name.<br />
Don't treat the IDs given in this XML file as trusted,<br />
but before using them, verify the format<br />
(e.g. only characters and digits for IDs).<br />
If you use powerful functions like jQuery, and the XML returns<br />
you code in the username ID, and you feed it unchecked to jQuery,<br />
it may be executed. --><br />
<usernameField id="email_field" name="email" /><br />
<passwordField name="password" /><br />
<!-- The submit button to trigger the server submit<br />
after filling in the fields.<br />
id and name attributes: See <usernameField> --><br />
<loginButton id="submit_button" name="login"/><br />
</loginPageInfo><br />
</webMail><br />
<br />
<clientConfigUpdate url="https://www.example.com/config/mozilla.xml" /><br />
<br />
</clientConfig><br />
</pre><br />
<br />
= Multiple servers =<br />
<br />
incomingServer and outgoingServer may appear several times. They are in order of priority, the first entry should generally be used, unless there's a specific factor or policy which prefers a later config.<br />
<br />
For example, there may be configs with STARTTLS and normal SSL. Use the first entry listed. If that fails (server config change), you can try the second config. If IMAP and POP3 servers both exist, then both should be listed; the client or end user can select the protocol which best suits its needs. The config/ISP can, however, express a preference for IMAP or POP3 by what is listed first in the config file.<br />
<br />
= Placeholders =<br />
<br />
The email address (before @ or with domain) that the user entered can be used as placeholder in the config file, so the file is the same for all users (i.e. static).<br />
<br />
Placeholders:<br />
* %EMAILADDRESS% (full email address of the user, usually entered by the user)<br />
* %EMAILLOCALPART% (email address, part before @)<br />
* %EMAILDOMAIN% (email address, part after @)<br />
* %REALNAME% (needed?)<br />
* The key (surrounded by %) in <inputfield key=""> (see below)<br />
<br />
These placeholders can be used as value or value part in most settings which take a string.<br />
<br />
= User input fields =<br />
<br />
(not yet implemented, see [https://bugzilla.mozilla.org/show_bug.cgi?id=564043 bug 564043])<br />
<br />
For some ISPs, the IMPA/POP/SMTP username (and maybe other fields) has no relation to the email address and has to be entered separately. E.g. Email address is ben.bucksch@wong.com (chosen by user), but username is G675476 (provided by ISP).<br />
<br />
In this case, an <inputfield> can be added for the username. It will let the client show a textfield to the user. The user-visible label is the one provided in the <inputfield label=""> attribute, to allow the ISP to use custom terminology for "username". The label is not localizable, that would be too complicated and most ISPs are local anyways - if really important, the ISP config server can look at the HTTP headers during the fetch.<br />
<br />
The text that the user entered is written into a placeholder %KEY%, where KEY is the content of the <inputfield key="KEY"> attribute and must be only upper case letters. The placeholder can then be used in other settings, see [[#Placeholders]] above.<br />
<br />
For example, a config file entry<br />
<userinput label="Username" key="%USERNAME%">D123456</userinput><br />
would result in a UI like:<br />
Username: [ ] example: D123456<br />
and cound be used elsewhere in the config file like:<br />
<username>%USERNAME%</username><br />
and if the user enters "D32198", it would be automatically filled in like:<br />
<username>D32198</username><br />
i.e. using D32198 as username for IMAP, POP or SMTP.<br />
<br />
The system is generic, so that it can in theory be used for other values as well. No other such purpose is currently known, apart from a separate POP and SMTP username maybe. It should not be used to let the user supply hostnames, as that would defeat the purpose of the autoconfig and be worse than the manual config UI provided by the client.<br />
<br />
= TODO =<br />
<br />
* Values specific to IMAP, e.g. bug 558659 (special folders), bug 572465 (subfolders) etc.. However, most of these can and should be done as IMAP extensions.<br />
* All settings and enum values<br />
* In bug 849540 and bug 1166625, a new authentication type was added to support OAuth2 in gmail.com domains. This looks like:<br />
<pre><br />
<incomingServer type="imap"><br />
<hostname>imap.googlemail.com</hostname><br />
<port>993</port><br />
<socketType>SSL</socketType><br />
<username>%EMAILADDRESS%</username><br />
<authentication>OAuth2</authentication><br />
<authentication>password-cleartext</authentication><br />
</incomingServer><br />
</pre><br />
<br />
In Thunderbird 38 and later, this will choose OAuth2 as the preferred authentication method, supported in both imap and smtp. For Thunderbird prior to version 38, the OAuth2 entry will be ignored, and the fallback password-cleartext used instead. <br />
<br />
The current status of OAuth2 does not allow this implementation to work for other providers, so additional parameters needed to specify this are hard-wired in Thunderbird. This mechanism will only work in gmail, other domains will fail if OAuth2 is specified. For the future, we would like to implement generic methods such that OAuth2 can be supported for arbitrary domains rather than requiring in-program customization for each supported domain.</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird:Autoconfiguration:ConfigFileFormat&diff=1227244Thunderbird:Autoconfiguration:ConfigFileFormat2020-05-16T11:49:39Z<p>BenB: Revert last change</p>
<hr />
<div>Author: [[User:BenB|Ben Bucksch]]. Please do not change this doc without checking with the author.<br />
<br />
This page is the authorative specification of the config file that the Mozilla ISPDB and config services at ISPs return.<br />
<br />
It is XML, with a clearly defined format, to be stable and usable by other mail clients, too. Update Aug 2010: In fact, [http://projects.gnome.org/evolution/ Evolution] and [http://userbase.kde.org/KMail KMail] and [http://www.kontact.org Kontact] now use it, too.<br />
<br />
= Description =<br />
<br />
[https://developer.mozilla.org/en/Thunderbird/Autoconfiguration#Configuration_file Some description]<br />
<br />
= XML =<br />
<br />
<pre><br />
<?xml version="1.0"?><br />
<clientConfig version="1.1"><br />
<emailProvider id="example.com"><br />
<domain>example.com</domain><br />
<domain>example.net</domain><br />
<br />
<displayName>Google Mail</displayName><br />
<displayShortName>GMail</displayShortName><br />
<br />
<incomingServer type="pop3"><br />
<hostname>pop.example.com</hostname><br />
<port>995</port><br />
<socketType>SSL</socketType><br />
<!-- "plain": no encryption<br />
"SSL": SSL 3 or TLS 1 on SSL-specific port<br />
"STARTTLS": on normal plain port and mandatory upgrade to TLS via STARTTLS<br />
--><br />
<username>%EMAILLOCALPART%</username><br />
<!-- "password-cleartext",<br />
"plain" (deprecated):<br />
Send password in the clear<br />
(dangerous, if SSL isn't used either).<br />
AUTH PLAIN, LOGIN or protocol-native login.<br />
"password-encrypted",<br />
"secure" (deprecated):<br />
A secure encrypted password mechanism.<br />
Can be CRAM-MD5 or DIGEST-MD5. Not NTLM.<br />
"NTLM":<br />
Use NTLM (or NTLMv2 or successors),<br />
the Windows login mechanism.<br />
"GSSAPI":<br />
Use Kerberos / GSSAPI,<br />
a single-signon mechanism used for big sites.<br />
"client-IP-address":<br />
The server recognizes this user based on the IP address.<br />
No authentication needed, the server will require no username nor password.<br />
"TLS-client-cert":<br />
On the SSL/TLS layer, the server requests a client certificate and the client sends one (possibly after letting the user select/confirm one), if available. (Not yet supported by Thunderbird)<br />
"none":<br />
No authentication<br />
Compatibility note: Thunderbird 3.0 accepts only "plain" and "secure". It will ignore the whole XML file, if other values are given. --><br />
<authentication>password-cleartext</authentication><br />
<pop3><br />
<!-- remove the following and leave to client/user? --><br />
<leaveMessagesOnServer>true</leaveMessagesOnServer><br />
<downloadOnBiff>true</downloadOnBiff><br />
<daysToLeaveMessagesOnServer>14</daysToLeaveMessagesOnServer><br />
<!-- only for servers which don't allow checks more often --><br />
<checkInterval minutes="15"/><!-- not yet supported --><br />
</pop3><br />
<password>optional: the user's password</password><br />
</incomingServer><br />
<br />
<outgoingServer type="smtp"><br />
<hostname>smtp.googlemail.com</hostname><br />
<port>587</port><br />
<socketType>STARTTLS</socketType> <!-- see above --><br />
<username>%EMAILLOCALPART%</username> <!-- if smtp-auth --><br />
<!-- smtp-auth (RFC 2554, 4954) or other auth mechanism.<br />
For values, see incoming.<br />
Additional options here:<br />
"SMTP-after-POP":<br />
authenticate to incoming mail server first<br />
before contacting the smtp server.<br />
Compatibility note: Thunderbird 3.0 accepts only "plain",<br />
"secure", "none", and "smtp-after-pop".<br />
It will ignore the whole XML file, if other values are given.<br />
--><br />
<authentication>password-cleartext</authentication><br />
<!-- If the server makes some additional requirements beyond<br />
<authentication>.<br />
"client-IP-address": The server is only reachable or works,<br />
if the user is in a certain IP network, e.g.<br />
the dialed into the ISP's network (DSL, cable, modem) or<br />
connected to a company network.<br />
Note: <authentication>client-IP-address</><br />
means that you may use the server without any auth.<br />
<authentication>password-cleartext</> *and*<br />
<restriction>client-IP-address</> means that you need to<br />
be in the correct IP network *and* (should) authenticate.<br />
Servers which do that are highly discouraged and<br />
should be avoided, see {{bug|556267}}.<br />
Not yet implemented. Spec (element name?) up to change.<br />
--><br />
<restriction>client-IP-address</restriction><br />
<!-- remove the following and leave to client/user? --><br />
<addThisServer>true</addThisServer><br />
<useGlobalPreferredServer>true</useGlobalPreferredServer><br />
<password>optional: the user's password</password><br />
</outgoingServer><br />
<br />
<identity><br />
<!-- needed? --><br />
<!-- We don't want Verizon setting "Organization: Verizon"<br />
for its customers --><br />
</identity><br />
<br />
<!-- see description. Not yet supported, see bug 564043. --><br />
<inputField key="USERNAME" label="Screen name"></inputField><br />
<inputField key="GRANDMA" label="Grandma">Elise Bauer</inputField><br />
<br />
<!-- Add this only when users (who already have an account) have to<br />
do something manually before the account can work with IMAP/POP or SSL.<br />
Note: Per XML, & (ampersand) needs to be escaped to & a m p ;<br />
(without spaces).<br />
Not yet implemented, see bug 586364. --><br />
<enable<br />
visiturl="https://mail.google.com/mail/?ui=2&amp;shva=1#settings/fwdandpop"><br />
<instruction>Check 'Enable IMAP and POP' in Google settings page</instruction><br />
<instruction lang="de">Schalten Sie 'IMAP und POP aktivieren' auf der Google Einstellungs-Seite an</instruction><br />
</enable><br />
<br />
<!-- A page where the ISP describes the configuration.<br />
This is purely informational and currently mainly for<br />
maintenance of the files and not used by the client at all.<br />
Note that we do not necessarily use exactly the config suggested<br />
by the ISP, e.g. when they don't recommend SSL, but it's available,<br />
we will configure SSL.<br />
The text content should contains a description in the native<br />
language of the ISP (customers), and a short English description,<br />
mostly for us.<br />
--><br />
<documentation url="http://www.example.com/help/mail/thunderbird"><br />
<descr lang="en">Configure Thunderbird 2.0 for IMAP</descr><br />
<descr lang="de">Thunderbird 2.0 mit IMAP konfigurieren</descr><br />
</documentation><br />
<br />
</emailProvider><br />
<br />
<!-- This allows to access the webmail service of the provider.<br />
The URLs are loaded into a standard webbrowser for the user.<br />
Specifying this is optional. --><br />
<webMail><br />
<!-- Webpage where the user has to log in manually by entering username<br />
and password himself.<br />
HTTPS required. --><br />
<loginPage url="https://mail.example.com/login/" /><br />
<br />
<!-- Same as loginAutomaticDOM, but the website makes checks that<br />
the user comes from the login page. So, open the login page<br />
in the browser, get the page's DOM, fill out name and password<br />
fields for the user, and trigger the login button.<br />
The login button might not be an HTML button, just a div, so<br />
to trigger it, send a click event to it.<br />
HTTPS is required for the URL. --><br />
<loginPageInfo url="https://mail.example.com/login/"><br />
<!-- What to fill into the usernameField.<br />
Format is the same as for <username> within <incomingServer>,<br />
including placeholders. See below for valid placeholders. --><br />
<username>%EMAILADDRESS%</username><br />
<!-- Allows to find the textfield on the page, to fill it out.<br />
The id attribute give the DOM ID,<br />
The name attribute give the DOM name attribute.<br />
One or both of id and name attributes must exist.<br />
Try the ID first (e.g. using getElementById()), if existing.<br />
Otherwise, try finding the element by name.<br />
Don't treat the IDs given in this XML file as trusted,<br />
but before using them, verify the format<br />
(e.g. only characters and digits for IDs).<br />
If you use powerful functions like jQuery, and the XML returns<br />
you code in the username ID, and you feed it unchecked to jQuery,<br />
it may be executed. --><br />
<usernameField id="email_field" name="email" /><br />
<passwordField name="password" /><br />
<!-- The submit button to trigger the server submit<br />
after filling in the fields.<br />
id and name attributes: See <usernameField> --><br />
<loginButton id="submit_button" name="login"/><br />
</loginPageInfo><br />
</webMail><br />
<br />
<clientConfigUpdate url="https://www.example.com/config/mozilla.xml" /><br />
<br />
</clientConfig><br />
</pre><br />
<br />
= Multiple servers =<br />
<br />
incomingServer and outgoingServer may appear several times. They are in order of priority, the first entry should generally be used, unless there's a specific factor or policy which prefers a later config.<br />
<br />
For example, there may be configs with STARTTLS and normal SSL. Use the first entry listed. If that fails (server config change), you can try the second config. If IMAP and POP3 servers both exist, then both should be listed; the client or end user can select the protocol which best suits its needs. The config/ISP can, however, express a preference for IMAP or POP3 by what is listed first in the config file.<br />
<br />
= Placeholders =<br />
<br />
The email address (before @ or with domain) that the user entered can be used as placeholder in the config file, so the file is the same for all users (i.e. static).<br />
<br />
Placeholders:<br />
* %EMAILADDRESS% (full email address of the user, usually entered by the user)<br />
* %EMAILLOCALPART% (email address, part before @)<br />
* %EMAILDOMAIN% (email address, part after @)<br />
* %REALNAME% (needed?)<br />
* The key (surrounded by %) in <inputfield key=""> (see below)<br />
<br />
These placeholders can be used as value or value part in most settings which take a string.<br />
<br />
= User input fields =<br />
<br />
(not yet implemented, see [https://bugzilla.mozilla.org/show_bug.cgi?id=564043 bug 564043])<br />
<br />
For some ISPs, the IMPA/POP/SMTP username (and maybe other fields) has no relation to the email address and has to be entered separately. E.g. Email address is ben.bucksch@wong.com (chosen by user), but username is G675476 (provided by ISP).<br />
<br />
In this case, an <inputfield> can be added for the username. It will let the client show a textfield to the user. The user-visible label is the one provided in the <inputfield label=""> attribute, to allow the ISP to use custom terminology for "username". The label is not localizable, that would be too complicated and most ISPs are local anyways - if really important, the ISP config server can look at the HTTP headers during the fetch.<br />
<br />
The text that the user entered is written into a placeholder %KEY%, where KEY is the content of the <inputfield key="KEY"> attribute and must be only upper case letters. The placeholder can then be used in other settings, see [[#Placeholders]] above.<br />
<br />
For example, a config file entry<br />
<userinput label="Username" key="%USERNAME%">D123456</userinput><br />
would result in a UI like:<br />
Username: [ ] example: D123456<br />
and cound be used elsewhere in the config file like:<br />
<username>%USERNAME%</username><br />
and if the user enters "D32198", it would be automatically filled in like:<br />
<username>D32198</username><br />
i.e. using D32198 as username for IMAP, POP or SMTP.<br />
<br />
The system is generic, so that it can in theory be used for other values as well. No other such purpose is currently known, apart from a separate POP and SMTP username maybe. It should not be used to let the user supply hostnames, as that would defeat the purpose of the autoconfig and be worse than the manual config UI provided by the client.<br />
<br />
= TODO =<br />
<br />
* Values specific to IMAP, e.g. bug 558659 (special folders), bug 572465 (subfolders) etc.. However, most of these can and should be done as IMAP extensions.<br />
* All settings and enum values<br />
* In bug 849540 and bug 1166625, a new authentication type was added to support OAuth2 in gmail.com domains. This looks like:<br />
<pre><br />
<incomingServer type="imap"><br />
<hostname>imap.googlemail.com</hostname><br />
<port>993</port><br />
<socketType>SSL</socketType><br />
<username>%EMAILADDRESS%</username><br />
<authentication>OAuth2</authentication><br />
<authentication>password-cleartext</authentication><br />
</incomingServer><br />
</pre><br />
<br />
In Thunderbird 38 and later, this will choose OAuth2 as the preferred authentication method, supported in both imap and smtp. For Thunderbird prior to version 38, the OAuth2 entry will be ignored, and the fallback password-cleartext used instead. <br />
<br />
The current status of OAuth2 does not allow this implementation to work for other providers, so additional parameters needed to specify this are hard-wired in Thunderbird. This mechanism will only work in gmail, other domains will fail if OAuth2 is specified. For the future, we would like to implement generic methods such that OAuth2 can be supported for arbitrary domains rather than requiring in-program customization for each supported domain.</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/Add-ons_Guide_63&diff=1204687Thunderbird/Add-ons Guide 632018-12-03T18:12:18Z<p>BenB: /* WebExtensions */</p>
<hr />
<div><big>'''Add-ons Guide for Thunderbird 63 and beyond'''</big><br />
<br />
If you have programming questions or wish to discuss the future can be posted in the mozilla.dev.apps.thunderbird newsgroup, see [[Thunderbird/CommunicationChannels#If_you.27re_a_developer|Communication Channels]].<br />
<br />
__TOC__<br />
<br />
The following extension types are supported in from Thunderbird 63 and beyond:<br />
<br />
=== WebExtensions ===<br />
<br />
This is the same type of addon that Firefox currently uses. For a general introduction, see [https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions WebExtensions] and [https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions What are WebExtensions].<br />
<br />
However, the APIs are necessarily different between Thunderbird and Firefox. Some applicable Firefox APIs work in Thunderbird (just try it), other Firefox APIs do not work, and Thunderbird has a few Thunderbird-specific APIs added. There is some documentation for the [https://thunderbird-webextensions.readthedocs.io/en/latest/ Thunderbird WebExtension APIs].<br />
For any API that is not yet provided, [https://github.com/thundernest/tb-web-ext-experiments/ WebExtension Experiments] can be used.<br />
<br />
There are not many WebExtensions for Thunderbird yet, so you're in new territory. Don't expect a smooth ride. But being a pioneer can be exciting, too. Help wanted!<br />
<br />
Details: WebExtensions have a manifest.json. As documented on [https://thunderbird-webextensions.readthedocs.io/en/latest/ Thunderbird WebExtension APIs], the following WebExtension APIs are available in Thunderbird:<br />
* Tabs and Windows API, {{bug|1455471}}, TB 60 and TB 63+<br />
* Address Book API, {{bug|1469238}}, TB 60 and TB 63+<br />
* FileLink API, {{bug|1481052}}, TB 64+, will be in TB 60.4<br />
* Toolbar buttons WebExtensions API, {{bug|1487008}}, TB 64+<br />
* Folder tab (3-pane) API, {{bug|1499617}}, in preparation<br />
* Composition API, {{bug|1503423}}, in preparation<br />
* And more, check meta-{{bug|1396172}} -<br />
<br />
=== Bootstrapped extensions ===<br />
Bootstrapped/restartless extensions with an install.rdf manifest. The code to handle bootstrapped extension and install.rdf has been moved to comm-central in {{bug|1510097}} and should be stable now. Important: Bootstrapped legacy extensions continue to work without a manifest.json file and will in fact break if you add that file.<br />
<br />
=== "Legacy" XUL extensions with overlays ===<br />
"Legacy" XUL extensions with overlays are still "somewhat" supported in Thunderbird 63 and beyond. An inbuilt overlay loader will load XUL overlays for extensions but may cause graphical glitches or malfunctions. We're tracking this in {{bug|1476259}}.<br />
<br />
To use this overlay loader, XUL overlay legacy extensions must replace install.rdf file with a WebExtensions style manifest.json file, which includes the key "legacy" set to true. See Lightning as an example:<br />https://hg.mozilla.org/comm-central/rev/e81f4b59a00a7d3e18d50fd3851ecbd47762a186#l2.5 <small>(Note: In this changeset the @variables@ are build variables, add-ons need to use fixed strings)</small>.<br /><br />
<br />
Examples of extensions converted to this type include "Lightning", "Compact Header", "Signature Switch" and "ThunderHTMLedit" (as of 3rd December 2018).<br />
<br />
== Removed in Thunderbird ==<br />
From Thunderbird version 60, overlays have been progressively removed, in version 63 there are no overlays left in Thunderbird. Due to Thunderbird's own overlay loader, XUL add-ons can still use overlays, but they can of course not overlay the removed Thunderbird overlays any more. For example, if you add-on overlaid mailWindowOverlay.xul, that needs to be changed; in this example you most likely need to overlay messenger.xul now.<br />
== Removed in mozilla61 ==<br />
* insertItemAt and removeItemAt methods from XUL elements. -- Replacement: insertBefore and remove.<br />
* temporary workaround, .setUnsafeInnerHTML or |document.allowUnsafeHTML = true;|, see [[Thunderbird/Add-ons_Guide_57#Removed_and_changed_in_mozilla60|here]].<br />
<br />
== Removed in mozilla63 ==<br />
* XUL element listbox together with listboxitem and listcell. -- Replacement: richlistbox.<br />
* XUL stringbundleset/stringbundle -- Replacement: Services.strings.createBundle(..)<br />
<br />
== Removed in mozilla64 ==<br />
* XUL element colorpicker. -- Replacement: HTML input type=color"<br />
<br />
== Removed in mozilla65 ==<br />
* XUL element progressmeter. -- Replacement: HTML progress</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/Add-ons_Guide_63&diff=1204686Thunderbird/Add-ons Guide 632018-12-03T18:11:24Z<p>BenB: /* WebExtensions */</p>
<hr />
<div><big>'''Add-ons Guide for Thunderbird 63 and beyond'''</big><br />
<br />
If you have programming questions or wish to discuss the future can be posted in the mozilla.dev.apps.thunderbird newsgroup, see [[Thunderbird/CommunicationChannels#If_you.27re_a_developer|Communication Channels]].<br />
<br />
__TOC__<br />
<br />
The following extension types are supported in from Thunderbird 63 and beyond:<br />
<br />
=== WebExtensions ===<br />
<br />
This is the same type of addon that Firefox currently uses. For a general introduction, see [https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions WebExtensions] and [https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions What are WebExtensions].<br />
<br />
However, the APIs are necessarily different between Thunderbird and Firefox. Some applicable Firefox APIs work in Thunderbird (just try it), other Firefox APIs do not work, and Thunderbird has a few Thunderbird-specific APIs added. There is some documentation for the [https://thunderbird-webextensions.readthedocs.io/en/latest/ Thunderbird WebExtension APIs].<br />
For any API that is not yet provided, [https://github.com/thundernest/tb-web-ext-experiments/ WebExtension Experiments] can be used.<br />
<br />
There are not many WebExtensions for Thunderbird yet, so you're in new territory. Don't expect a smooth ride. But being a pioneer can be exciting, too. Help wanted!<br />
<br />
Details: WebExtensions have a manifest.json. As documented on [https://thunderbird-webextensions.readthedocs.io/en/latest/ Thunderbird WebExtension APIs], The following WebExtension APIs are available in Thunderbird:<br />
* Tabs and Windows API, {{bug|1455471}}, TB 60 and TB 63+<br />
* Address Book API, {{bug|1469238}}, TB 60 and TB 63+<br />
* FileLink API, {{bug|1481052}}, TB 64+, will be in TB 60.4<br />
* Toolbar buttons WebExtensions API, {{bug|1487008}}, TB 64+<br />
* Folder tab (3-pane) API, {{bug|1499617}}, in preparation<br />
* Composition API, {{bug|1503423}}, in preparation<br />
* And more, check meta-{{bug|1396172}} -<br />
<br />
=== Bootstrapped extensions ===<br />
Bootstrapped/restartless extensions with an install.rdf manifest. The code to handle bootstrapped extension and install.rdf has been moved to comm-central in {{bug|1510097}} and should be stable now. Important: Bootstrapped legacy extensions continue to work without a manifest.json file and will in fact break if you add that file.<br />
<br />
=== "Legacy" XUL extensions with overlays ===<br />
"Legacy" XUL extensions with overlays are still "somewhat" supported in Thunderbird 63 and beyond. An inbuilt overlay loader will load XUL overlays for extensions but may cause graphical glitches or malfunctions. We're tracking this in {{bug|1476259}}.<br />
<br />
To use this overlay loader, XUL overlay legacy extensions must replace install.rdf file with a WebExtensions style manifest.json file, which includes the key "legacy" set to true. See Lightning as an example:<br />https://hg.mozilla.org/comm-central/rev/e81f4b59a00a7d3e18d50fd3851ecbd47762a186#l2.5 <small>(Note: In this changeset the @variables@ are build variables, add-ons need to use fixed strings)</small>.<br /><br />
<br />
Examples of extensions converted to this type include "Lightning", "Compact Header", "Signature Switch" and "ThunderHTMLedit" (as of 3rd December 2018).<br />
<br />
== Removed in Thunderbird ==<br />
From Thunderbird version 60, overlays have been progressively removed, in version 63 there are no overlays left in Thunderbird. Due to Thunderbird's own overlay loader, XUL add-ons can still use overlays, but they can of course not overlay the removed Thunderbird overlays any more. For example, if you add-on overlaid mailWindowOverlay.xul, that needs to be changed; in this example you most likely need to overlay messenger.xul now.<br />
== Removed in mozilla61 ==<br />
* insertItemAt and removeItemAt methods from XUL elements. -- Replacement: insertBefore and remove.<br />
* temporary workaround, .setUnsafeInnerHTML or |document.allowUnsafeHTML = true;|, see [[Thunderbird/Add-ons_Guide_57#Removed_and_changed_in_mozilla60|here]].<br />
<br />
== Removed in mozilla63 ==<br />
* XUL element listbox together with listboxitem and listcell. -- Replacement: richlistbox.<br />
* XUL stringbundleset/stringbundle -- Replacement: Services.strings.createBundle(..)<br />
<br />
== Removed in mozilla64 ==<br />
* XUL element colorpicker. -- Replacement: HTML input type=color"<br />
<br />
== Removed in mozilla65 ==<br />
* XUL element progressmeter. -- Replacement: HTML progress</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/Add-ons_Guide_63&diff=1204685Thunderbird/Add-ons Guide 632018-12-03T18:09:14Z<p>BenB: /* WebExtensions */</p>
<hr />
<div><big>'''Add-ons Guide for Thunderbird 63 and beyond'''</big><br />
<br />
If you have programming questions or wish to discuss the future can be posted in the mozilla.dev.apps.thunderbird newsgroup, see [[Thunderbird/CommunicationChannels#If_you.27re_a_developer|Communication Channels]].<br />
<br />
__TOC__<br />
<br />
The following extension types are supported in from Thunderbird 63 and beyond:<br />
<br />
=== WebExtensions ===<br />
<br />
This is the same type of addon that Firefox uses. For a general introduction, see [https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions WebExtensions] and [https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions What are WebExtensions].<br />
<br />
However, the APIs are different between Thunderbird and Firefox. Some Firefox APIs work in Thunderbird (just try it), other Firefox APIs do not work, and Thunderbird has a few specific APIs added. There is some documentation for the [https://thunderbird-webextensions.readthedocs.io/en/latest/ Thunderbird WebExtension APIs].<br />
For any API that is not yet provided, [https://github.com/thundernest/tb-web-ext-experiments/ WebExtension Experiments] can be used.<br />
<br />
There are not many WebExtensions for Thunderbird yet, so you're in new territory. Don't expect a smooth ride. But being a pioneer can be exciting, too. Help wanted!<br />
<br />
Details: WebExtensions have a manifest.json. As documented on [https://thunderbird-webextensions.readthedocs.io/en/latest/ Thunderbird WebExtension APIs], The following WebExtension APIs are available in Thunderbird:<br />
* Tabs and Windows API, {{bug|1455471}}, TB 60 and TB 63+<br />
* Address Book API, {{bug|1469238}}, TB 60 and TB 63+<br />
* FileLink API, {{bug|1481052}}, TB 64+, will be in TB 60.4<br />
* Toolbar buttons WebExtensions API, {{bug|1487008}}, TB 64+<br />
* Folder tab (3-pane) API, {{bug|1499617}}, in preparation<br />
* Composition API, {{bug|1503423}}, in preparation<br />
* And more, check meta-{{bug|1396172}} -<br />
<br />
=== Bootstrapped extensions ===<br />
Bootstrapped/restartless extensions with an install.rdf manifest. The code to handle bootstrapped extension and install.rdf has been moved to comm-central in {{bug|1510097}} and should be stable now. Important: Bootstrapped legacy extensions continue to work without a manifest.json file and will in fact break if you add that file.<br />
<br />
=== "Legacy" XUL extensions with overlays ===<br />
"Legacy" XUL extensions with overlays are still "somewhat" supported in Thunderbird 63 and beyond. An inbuilt overlay loader will load XUL overlays for extensions but may cause graphical glitches or malfunctions. We're tracking this in {{bug|1476259}}.<br />
<br />
To use this overlay loader, XUL overlay legacy extensions must replace install.rdf file with a WebExtensions style manifest.json file, which includes the key "legacy" set to true. See Lightning as an example:<br />https://hg.mozilla.org/comm-central/rev/e81f4b59a00a7d3e18d50fd3851ecbd47762a186#l2.5 <small>(Note: In this changeset the @variables@ are build variables, add-ons need to use fixed strings)</small>.<br /><br />
<br />
Examples of extensions converted to this type include "Lightning", "Compact Header", "Signature Switch" and "ThunderHTMLedit" (as of 3rd December 2018).<br />
<br />
== Removed in Thunderbird ==<br />
From Thunderbird version 60, overlays have been progressively removed, in version 63 there are no overlays left in Thunderbird. Due to Thunderbird's own overlay loader, XUL add-ons can still use overlays, but they can of course not overlay the removed Thunderbird overlays any more. For example, if you add-on overlaid mailWindowOverlay.xul, that needs to be changed; in this example you most likely need to overlay messenger.xul now.<br />
== Removed in mozilla61 ==<br />
* insertItemAt and removeItemAt methods from XUL elements. -- Replacement: insertBefore and remove.<br />
* temporary workaround, .setUnsafeInnerHTML or |document.allowUnsafeHTML = true;|, see [[Thunderbird/Add-ons_Guide_57#Removed_and_changed_in_mozilla60|here]].<br />
<br />
== Removed in mozilla63 ==<br />
* XUL element listbox together with listboxitem and listcell. -- Replacement: richlistbox.<br />
* XUL stringbundleset/stringbundle -- Replacement: Services.strings.createBundle(..)<br />
<br />
== Removed in mozilla64 ==<br />
* XUL element colorpicker. -- Replacement: HTML input type=color"<br />
<br />
== Removed in mozilla65 ==<br />
* XUL element progressmeter. -- Replacement: HTML progress</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/Add-ons_Guide_63&diff=1204684Thunderbird/Add-ons Guide 632018-12-03T18:06:56Z<p>BenB: /* WebExtensions */</p>
<hr />
<div><big>'''Add-ons Guide for Thunderbird 63 and beyond'''</big><br />
<br />
If you have programming questions or wish to discuss the future can be posted in the mozilla.dev.apps.thunderbird newsgroup, see [[Thunderbird/CommunicationChannels#If_you.27re_a_developer|Communication Channels]].<br />
<br />
__TOC__<br />
<br />
The following extension types are supported in from Thunderbird 63 and beyond:<br />
<br />
=== WebExtensions ===<br />
<br />
This is the same type of addon that Firefox uses. For a general introduction, see [https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions WebExtensions] and [https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions What are WebExtensions].<br />
<br />
However, the APIs are different between Thunderbird and Firefox. Some Firefox APIs work in Thunderbird (just try it), other Firefox APIs do not work, and Thunderbird has a few specific APIs added. There is some documentation for the [https://thunderbird-webextensions.readthedocs.io/en/latest/ Thunderbird WebExtension APIs] - this is your main landing page.<br />
For any API that is not yet provided, [https://github.com/thundernest/tb-web-ext-experiments/ WebExtension Experiments] can be used.<br />
<br />
There are not many WebExtensions for Thunderbird yet, our own Owl is one of the first that I know of, so you're in new territory. Don't expect a smooth ride. But to be one the pioneers can be exciting, too. Help wanted!<br />
<br />
More details: WebExtensions have a manifest.json. The following WebExtension APIs are available in Thunderbird, as documented on [https://thunderbird-webextensions.readthedocs.io/en/latest/ Thunderbird WebExtension APIs]:<br />
* Tabs and Windows API, {{bug|1455471}}, TB 60 and TB 63+<br />
* Address Book API, {{bug|1469238}}, TB 60 and TB 63+<br />
* FileLink API, {{bug|1481052}}, TB 64+, will be in TB 60.4<br />
* Toolbar buttons WebExtensions API, {{bug|1487008}}, TB 64+<br />
* Folder tab (3-pane) API, {{bug|1499617}}, in preparation<br />
* Composition API, {{bug|1503423}}, in preparation<br />
* And more, check meta-{{bug|1396172}} -<br />
<br />
=== Bootstrapped extensions ===<br />
Bootstrapped/restartless extensions with an install.rdf manifest. The code to handle bootstrapped extension and install.rdf has been moved to comm-central in {{bug|1510097}} and should be stable now. Important: Bootstrapped legacy extensions continue to work without a manifest.json file and will in fact break if you add that file.<br />
<br />
=== "Legacy" XUL extensions with overlays ===<br />
"Legacy" XUL extensions with overlays are still "somewhat" supported in Thunderbird 63 and beyond. An inbuilt overlay loader will load XUL overlays for extensions but may cause graphical glitches or malfunctions. We're tracking this in {{bug|1476259}}.<br />
<br />
To use this overlay loader, XUL overlay legacy extensions must replace install.rdf file with a WebExtensions style manifest.json file, which includes the key "legacy" set to true. See Lightning as an example:<br />https://hg.mozilla.org/comm-central/rev/e81f4b59a00a7d3e18d50fd3851ecbd47762a186#l2.5 <small>(Note: In this changeset the @variables@ are build variables, add-ons need to use fixed strings)</small>.<br /><br />
<br />
Examples of extensions converted to this type include "Lightning", "Compact Header", "Signature Switch" and "ThunderHTMLedit" (as of 3rd December 2018).<br />
<br />
== Removed in Thunderbird ==<br />
From Thunderbird version 60, overlays have been progressively removed, in version 63 there are no overlays left in Thunderbird. Due to Thunderbird's own overlay loader, XUL add-ons can still use overlays, but they can of course not overlay the removed Thunderbird overlays any more. For example, if you add-on overlaid mailWindowOverlay.xul, that needs to be changed; in this example you most likely need to overlay messenger.xul now.<br />
== Removed in mozilla61 ==<br />
* insertItemAt and removeItemAt methods from XUL elements. -- Replacement: insertBefore and remove.<br />
* temporary workaround, .setUnsafeInnerHTML or |document.allowUnsafeHTML = true;|, see [[Thunderbird/Add-ons_Guide_57#Removed_and_changed_in_mozilla60|here]].<br />
<br />
== Removed in mozilla63 ==<br />
* XUL element listbox together with listboxitem and listcell. -- Replacement: richlistbox.<br />
* XUL stringbundleset/stringbundle -- Replacement: Services.strings.createBundle(..)<br />
<br />
== Removed in mozilla64 ==<br />
* XUL element colorpicker. -- Replacement: HTML input type=color"<br />
<br />
== Removed in mozilla65 ==<br />
* XUL element progressmeter. -- Replacement: HTML progress</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/Add-ons_Guide_63&diff=1204683Thunderbird/Add-ons Guide 632018-12-03T18:05:39Z<p>BenB: /* WebExtensions */ Introduction text</p>
<hr />
<div><big>'''Add-ons Guide for Thunderbird 63 and beyond'''</big><br />
<br />
If you have programming questions or wish to discuss the future can be posted in the mozilla.dev.apps.thunderbird newsgroup, see [[Thunderbird/CommunicationChannels#If_you.27re_a_developer|Communication Channels]].<br />
<br />
__TOC__<br />
<br />
The following extension types are supported in from Thunderbird 63 and beyond:<br />
<br />
=== WebExtensions ===<br />
<br />
This is the same type of addon that Firefox uses. For a general introduction, see [https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions WebExtensions] and [https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions What are WebExtensions].<br />
<br />
However, the APIs are different between Thunderbird and Firefox. Some Firefox APIs work in Thunderbird (just try it), other Firefox APIs do not work, and Thunderbird has a few specific APIs added. There is some documentation for the [https://thunderbird-webextensions.readthedocs.io/en/latest/ Thunderbird WebExtension APIs].<br />
[https://github.com/thundernest/tb-web-ext-experiments/ WebExtension Experiments] can be used for any API that is not yet provided.<br />
<br />
There are not many WebExtensions for Thunderbird yet, our own Owl is one of the first that I know of, so you're in new territory. Don't expect a smooth ride. But to be one the pioneers can be exciting, too. Help wanted!<br />
<br />
More details: WebExtensions have a manifest.json. The following WebExtension APIs are available in Thunderbird:<br />
* Tabs and Windows API, {{bug|1455471}}, TB 60 and TB 63+<br />
* Address Book API, {{bug|1469238}}, TB 60 and TB 63+<br />
* FileLink API, {{bug|1481052}}, TB 64+, will be in TB 60.4<br />
* Toolbar buttons WebExtensions API, {{bug|1487008}}, TB 64+<br />
* Folder tab (3-pane) API, {{bug|1499617}}, in preparation<br />
* Composition API, {{bug|1503423}}, in preparation<br />
* And more, check meta-{{bug|1396172}} -<br />
<br />
=== Bootstrapped extensions ===<br />
Bootstrapped/restartless extensions with an install.rdf manifest. The code to handle bootstrapped extension and install.rdf has been moved to comm-central in {{bug|1510097}} and should be stable now. Important: Bootstrapped legacy extensions continue to work without a manifest.json file and will in fact break if you add that file.<br />
<br />
=== "Legacy" XUL extensions with overlays ===<br />
"Legacy" XUL extensions with overlays are still "somewhat" supported in Thunderbird 63 and beyond. An inbuilt overlay loader will load XUL overlays for extensions but may cause graphical glitches or malfunctions. We're tracking this in {{bug|1476259}}.<br />
<br />
To use this overlay loader, XUL overlay legacy extensions must replace install.rdf file with a WebExtensions style manifest.json file, which includes the key "legacy" set to true. See Lightning as an example:<br />https://hg.mozilla.org/comm-central/rev/e81f4b59a00a7d3e18d50fd3851ecbd47762a186#l2.5 <small>(Note: In this changeset the @variables@ are build variables, add-ons need to use fixed strings)</small>.<br /><br />
<br />
Examples of extensions converted to this type include "Lightning", "Compact Header", "Signature Switch" and "ThunderHTMLedit" (as of 3rd December 2018).<br />
<br />
== Removed in Thunderbird ==<br />
From Thunderbird version 60, overlays have been progressively removed, in version 63 there are no overlays left in Thunderbird. Due to Thunderbird's own overlay loader, XUL add-ons can still use overlays, but they can of course not overlay the removed Thunderbird overlays any more. For example, if you add-on overlaid mailWindowOverlay.xul, that needs to be changed; in this example you most likely need to overlay messenger.xul now.<br />
== Removed in mozilla61 ==<br />
* insertItemAt and removeItemAt methods from XUL elements. -- Replacement: insertBefore and remove.<br />
* temporary workaround, .setUnsafeInnerHTML or |document.allowUnsafeHTML = true;|, see [[Thunderbird/Add-ons_Guide_57#Removed_and_changed_in_mozilla60|here]].<br />
<br />
== Removed in mozilla63 ==<br />
* XUL element listbox together with listboxitem and listcell. -- Replacement: richlistbox.<br />
* XUL stringbundleset/stringbundle -- Replacement: Services.strings.createBundle(..)<br />
<br />
== Removed in mozilla64 ==<br />
* XUL element colorpicker. -- Replacement: HTML input type=color"<br />
<br />
== Removed in mozilla65 ==<br />
* XUL element progressmeter. -- Replacement: HTML progress</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/NextGeneration/Motivation&diff=1186708Thunderbird/NextGeneration/Motivation2018-01-14T19:56:35Z<p>BenB: 4-fold</p>
<hr />
<div>= Why we do this =<br />
<br />
Thunderbird is now over 20 old. The beginnings go back to 1995, with the Mail component in Netscape 2.0. Then came Netscape Communicator 4.5, by another team. 1999-2000, it was turned into Mozilla Seamonkey, then into Thunderbird. The change to Mozilla with XUL and XPCOM was big, but still kept a lot of the backend code. On top of all that are a few decades of hacks.<br />
<br />
It's time for a refreshment, using a clean architecture and using a clear separation between model and view, and a thin view, to allow for easy changes to the view or even completely separate views, e.g. for mobile. Architecturally, change observers will help a lot to keep the components decoupled.<br />
<br />
What's really making this change required, though, is that the Mozilla platform moves away from XUL and XPCOM towards HTML and Servo. Both XUL and XPCOM are base technologies that Thunderbird is written in or that define core parts of it. The Thunderbird project already uses a good part of its development effort just keeping up with Mozilla changes, and this effort is going to increase significantly in the near future (Nov 2017) when XUL extensions are dis commissioned. Mozilla made this drastic move not to deliberately kill a community, but to allow them to make large changes to the platform. These very changes are going to affect Thunderbird massively, being the largest XUL and XPCOM application ever written, even bigger than Firefox itself.<br />
<br />
This means that large parts of the codebase have to be rewritten anyway, in the mid-term to near future. Of course, the changes in Gecko are gradual, but eventually, the technology will go away, so the overall work is there nonetheless.<br />
<br />
Given that XPCOM is the very technology that creates the API between the modules, is hard to replace step by step. I think we would spent as much time integrating the new modules with the old code as we would take writing the module in the first place, which means the overall effort increases at least 2-fold, by trying to do it step by step. Other negative effects add another 2-fold factor, so that it eventually takes 4 times as long to operate "on the open heart" than using the "minimal viable product" approach. Worse, the new component would have to adhere to old and unfortunate design patterns that emerged between components.<br />
<br />
The TB:NG project proposes to use this opportunity to also create clear component separation and clean API that make it easy to learn the codebase and easy to make changes to it. A good extension API surface and more stable extensions would be a side effect of a good internal API.</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/NextGeneration/Motivation&diff=1186707Thunderbird/NextGeneration/Motivation2018-01-14T19:53:49Z<p>BenB: Expand on gradual change being costly</p>
<hr />
<div>= Why we do this =<br />
<br />
Thunderbird is now over 20 old. The beginnings go back to 1995, with the Mail component in Netscape 2.0. Then came Netscape Communicator 4.5, by another team. 1999-2000, it was turned into Mozilla Seamonkey, then into Thunderbird. The change to Mozilla with XUL and XPCOM was big, but still kept a lot of the backend code. On top of all that are a few decades of hacks.<br />
<br />
It's time for a refreshment, using a clean architecture and using a clear separation between model and view, and a thin view, to allow for easy changes to the view or even completely separate views, e.g. for mobile. Architecturally, change observers will help a lot to keep the components decoupled.<br />
<br />
What's really making this change required, though, is that the Mozilla platform moves away from XUL and XPCOM towards HTML and Servo. Both XUL and XPCOM are base technologies that Thunderbird is written in or that define core parts of it. The Thunderbird project already uses a good part of its development effort just keeping up with Mozilla changes, and this effort is going to increase significantly in the near future (Nov 2017) when XUL extensions are dis commissioned. Mozilla made this drastic move not to deliberately kill a community, but to allow them to make large changes to the platform. These very changes are going to affect Thunderbird massively, being the largest XUL and XPCOM application ever written, even bigger than Firefox itself.<br />
<br />
This means that large parts of the codebase have to be rewritten anyway, in the mid-term to near future. Of course, the changes in Gecko are gradual, but eventually, the technology will go away, so the overall work is there nonetheless.<br />
<br />
Given that XPCOM is the very technology that creates the API between the modules, is hard to replace step by step. I think we would spent as much time integrating the new modules with the old code as we would take writing the module in the first place, which means the overall effort increases at least 2-fold by trying to do it step by step. Worse, the new component would have to adhere to old and unfortunate design patterns that emerged between components.<br />
<br />
The TB:NG project proposes to use this opportunity to also create clear component separation and clean API that make it easy to learn the codebase and easy to make changes to it. A good extension API surface and more stable extensions would be a side effect of a good internal API.</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/NextGeneration/UI-goals&diff=1186706Thunderbird/NextGeneration/UI-goals2018-01-14T19:46:13Z<p>BenB: UI goals and target users</p>
<hr />
<div>= Be close to the existing Thunderbird =<br />
<br />
Even though we write almost all code from scratch, we will save a lot of time by having a clear goal: We want to replicate the current Thunderbird, from an end user perspective. That means, the user will find the same 3-pane window layout, the same way how folders and message lists and the thread pane operate. The theme will be similar. Existing Thunderbird users should feel right at home.<br />
<br />
We retain the overall UI and most features and qualities like performance, even if we do not copy all little details.<br />
<br />
Disclaimer: Given that the technological basis - particularly HTML - is completely different, there will be some things that work differently in some ways. Hopefully, many will be better. We will have some technical limitations. Some will be just different, because the underlying implementation is completely different. The goal is not to copy bug for bug, but to make existing users immediately recognize this as Thunderbird, and feel at home, even if some details are different.<br />
<br />
We must pay attention to also keep technical qualities that many of our users rely on. An obvious one is that the new implementation must be able to quickly scroll through a list of up to 100000 messages. There is no such HTML widget that allows that, we would have to create one, but I think it's feasible, I already have ideas how to do that. We also need to preserve privacy and security qualities that Thunderbird has, or even improve on it.<br />
<br />
= Fresh UI, more platforms =<br />
<br />
In addition to replicating the current Thunderbird UI, we should also experiment with new forms of UI, in parallel. For example, we should create a UI that's suitable for the new generation of users that never used a desktop email client before. These people do not feel at home with Thunderbird today, and we should create something for them.<br />
<br />
A lot of the new userbase is on mobile platforms and on tablets. That new UI should be "responsive" (automatically adapting to different screen sized) so that it runs well on tablets and smart phones as well. With Cordova and similar toolkits, we have a technological basis to quickly make a mobile app out it so that it installs like any other app. It would be a replacement for the system "email" app.<br />
<br />
The goal for the new UI are 1 billion users.</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/NextGeneration&diff=1186705Thunderbird/NextGeneration2018-01-14T19:45:13Z<p>BenB: Add Planning, UI</p>
<hr />
<div>The name "Thunderbird: Next Generation" is a homage to my favorite TV series [http://memory-alpha.wikia.com/wiki/Star_Trek:_The_Next_Generation Star Trek: Next Generation], which took a great thing, and made it even better. Same concept, new ideas, and much better. Several decades later.<br />
<br />
<br />
* [[Thunderbird/NextGeneration/Motivation|Motivation - Why we do this]]<br />
* [[Thunderbird/NextGeneration/UI-goals|Goals for UI and target users]]<br />
* [[Thunderbird/NextGeneration/Planning|Planning]]<br />
<br />
= Architecture =<br />
* [[Thunderbird/NextGeneration/MVC|MVC]]<br />
** [[Thunderbird/NextGeneration/Storage|Storage]]<br />
** [[Thunderbird/NextGeneration/Model|Model]] (read first)<br />
** [[Thunderbird/NextGeneration/Services|Services]]<br />
** [[Thunderbird/NextGeneration/View|View]]<br />
* Technical cross-application APIs<br />
** [[Thunderbird/NextGeneration/Collections|Collections]]<br />
** [[Thunderbird/NextGeneration/Error handling|Error handling]]<br />
** [[Thunderbird/NextGeneration/Async functions|Async functions]]</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/NextGeneration/Planning&diff=1186704Thunderbird/NextGeneration/Planning2018-01-14T19:43:11Z<p>BenB: Planning sketched out per year, and how many man years</p>
<hr />
<div>= Maintain old Thunderbird code base =<br />
<br />
During the time while the new rewrite is implemented, a smaller part of the staff will maintain Thunderbird, as they have done in the last 2 years. We keep up with Gecko changes, and fix smaller bugs. But we will not do major refactoring or big new features on the old codebase.<br />
<br />
This gives users a continuously updates Thunderbird. Particularly important are security updates for security holes found in Gecko, which Thunderbird inherits. They might be exposed in HTML emails, RSS feeds or other places where Thunderbird shows HTML and renders images.<br />
<br />
= Effort =<br />
<br />
I would estimate that we need a team of 10 full time developers, for 3 years. We need 2 persons for the framework, 3 for backend modules, 4 for frontend UI, and 1 for theming.<br />
<br />
Those who work on TB:NG need to concentrate exclusively on this project, to not be distracted.<br />
<br />
= Year 1 =<br />
<br />
In the first year, we are laying the foundation, getting the framework sorted out, building infrastructure etc..<br />
<br />
After 1 year, I would expect a first demo that can read and write email, but with a very minimal feature set and many rough edges. A few enthusiastic first alpha users might be able to use it for their email needs, and some developers can use it for their daily needs.<br />
<br />
= Year 2 =<br />
<br />
In the second year, we would concentrate on building the important features that are needed for most users.<br />
<br />
After 2 years, we should have an email client that's appealing to most normal users. Even some power users might like it, because we have advanced features that no other client has, but they will miss some features.<br />
<br />
= Year 3 =<br />
<br />
In the third year, we concentrate on feature parity to the old Thunderbird. We add any features that Thunderbird currently has and are appreciated by the existing userbase. We also add functionality that allows larger deployments, as a significant part of userbase are enterprises.<br />
<br />
Any features that are used by significantly less than 1% of the userbase will not be implemented, in favor of other features that are desperately needed today.<br />
<br />
After 3 years, 95% of the existing Thunderbird userbase should find the features they need in the new implementation. There will be some changes and adoptions necessary, but there should be a way to do what they need. That's what I call "feature parity".<br />
<br />
= Year 4-20 =<br />
<br />
Keep improving</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/NextGeneration&diff=1186703Thunderbird/NextGeneration2018-01-14T19:37:06Z<p>BenB: Move the Why to its own page</p>
<hr />
<div>The name "Thunderbird: Next Generation" is a homage to my favorite TV series [http://memory-alpha.wikia.com/wiki/Star_Trek:_The_Next_Generation Star Trek: Next Generation], which took a great thing, and made it even better. Same concept, new ideas, and much better. Several decades later.<br />
<br />
= Architecture =<br />
* [[Thunderbird/NextGeneration/Motivation|Motivation - Why we do this]]<br />
* [[Thunderbird/NextGeneration/MVC|MVC]]<br />
* [[Thunderbird/NextGeneration/Storage|Storage]]<br />
* [[Thunderbird/NextGeneration/Model|Model]] (read first)<br />
* [[Thunderbird/NextGeneration/Services|Services]]<br />
* [[Thunderbird/NextGeneration/View|View]]<br />
* Technical cross-application APIs<br />
* [[Thunderbird/NextGeneration/Collections|Collections]]<br />
* [[Thunderbird/NextGeneration/Error handling|Error handling]]<br />
* [[Thunderbird/NextGeneration/Async functions|Async functions]]</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/NextGeneration/Motivation&diff=1186702Thunderbird/NextGeneration/Motivation2018-01-14T19:36:14Z<p>BenB: Motivation - moved from start page</p>
<hr />
<div>= Why we do this =<br />
<br />
Thunderbird is now over 20 old. The beginnings go back to 1995, with the Mail component in Netscape 2.0. Then came Netscape Communicator 4.5, by another team. 1999-2000, it was turned into Mozilla Seamonkey, then into Thunderbird. The change to Mozilla with XUL and XPCOM was big, but still kept a lot of the backend code. On top of all that are a few decades of hacks.<br />
<br />
It's time for a refreshment, using a clean architecture and using a clear separation between model and view, and a thin view, to allow for easy changes to the view or even completely separate views, e.g. for mobile. Architecturally, change observers will help a lot to keep the components decoupled.<br />
<br />
What's really making this change required, though, is that the Mozilla platform moves away from XUL and XPCOM towards HTML and Servo. Both XUL and XPCOM are base technologies that Thunderbird is written in or that define core parts of it. The Thunderbird project already uses a good part of its development effort just keeping up with Mozilla changes, and this effort is going to increase significantly in the near future (Nov 2017) when XUL extensions are dis commissioned. Mozilla made this drastic move not to deliberately kill a community, but to allow them to make large changes to the platform. These very changes are going to affect Thunderbird massively, being the largest XUL and XPCOM application ever written, even bigger than Firefox itself.<br />
<br />
This means that large parts of the codebase have to be rewritten anyway, in the mid-term to near future. The TB:NG project proposes to use this opportunity to also create clear component separation and clean API that make it easy to learn the codebase and easy to make changes to it. A good extension API surface and more stable extensions would be a side effect of a good internal API.</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/NextGeneration/Collections&diff=1178314Thunderbird/NextGeneration/Collections2017-08-15T00:26:43Z<p>BenB: /* Example code for main window */ accountsManager</p>
<hr />
<div>Author: Ben Bucksch (Please check with the author before modifying)<br />
<br />
A recurring pattern across the model of many components is to have a list of objects.<br />
<br />
:For example, a message folder has a list of messages and a list of other sub-folders.<br />
<br />
:An address book is basically just a list of address book cards.<br />
<br />
For most of these lists, it is important to be notified of changes, i.e. that they are observable. Most of these lists also need add and remove functions.<br />
<br />
Instead of re-creating these common functions, we will use a collection library that creates a standard API and implementation, which allows addition/removal, observing, and higher-level functions like merging lists.<br />
<br />
The UI list widgets can then directly subscribe to these observers, and automatically update. The concrete application UI only needs to define how to render a single item, which list to render.<br />
<br />
This will dramatically simplify the API and implementation of the entire application.<br />
<br />
:For example, the address book API needs to have only 2 properties: The name of the AB and the list of cards. The list is the generic collection API and allows addition and removal of cards.<br />
<br />
:Likewise, the account manager only needs a property with the list of accounts, which is a standard collection.<br />
<br />
For the API, see:<br />
* [[Jetpack/Collections]]<br />
* [https://github.com/benbucksch/jscollection/ GitHub]<br />
<br />
== Example code for main window ==<br />
<br />
To illustrate the power of the concept, here is some example code for the 3-pane main window. This sample contains almost all code necessary to display the account list, folder list and message list, and to react to mouse clicks selecting items and loading them. Missing are the generic list widget implementation and the code to display an individual item.<br />
<br />
function start() {<br />
try {<br />
gAccountListE = new Fastlist(E("account-list"));<br />
gFolderListE = new Fastlist(E("folder-list"));<br />
gMessageListE = new Fastlist(E("message-list"));<br />
<br />
gAccountListE.showCollection(accountsManager.accounts);<br />
gAccountSelectionObserver.onSelectedItem(null);<br />
gFolderSelectionObserver.onSelectedItem(null);<br />
<br />
gAccountListE.selectedCollection.registerObserver(gAccountSelectionObserver);<br />
gFolderListE.selectedCollection.registerObserver(gFolderSelectionObserver);<br />
gMessageListE.selectedCollection.registerObserver(gMessageSelectionObserver);<br />
} catch (e) { showError(e); }<br />
}<br />
window.addEventListener("load", start, false);<br />
<br />
var gAccountSelectionObserver = new SingleSelectionObserver();<br />
gAccountSelectionObserver.onSelectedItem = function(account) {<br />
gFolderListE.showCollection(account ? account.folders : new ArrayColl());<br />
};<br />
<br />
var gFolderSelectionObserver = new SingleSelectionObserver();<br />
gFolderSelectionObserver.onSelectedItem = function(folder) {<br />
gMessageListE.showCollection(folder ? folder.messages : new ArrayColl());<br />
};<br />
<br />
var gMessageSelectionObserver = new SingleSelectionObserver();<br />
gMessageSelectionObserver.onSelectedItem = function(message) {<br />
if (message) {<br />
showMessage(message);<br />
} else {<br />
// show start page<br />
}<br />
};<br />
<br />
What's happening here is:<br />
# The accounts UI list widget is populated with the accounts list in the model.<br />
# The generic list widget automatically subscribes to changes in the accounts list, and will immediately display any new accounts being added or removed. The same is true for folders and messages.<br />
# The generic list widget also handles selections using mouse and keyboard.<br />
# We instantiate an SingleSelectionObserver for each of the UI list widgets, and let it listen to selections.<br />
# We define what should happen when the user selects an account, a folder and a message.<br />
## If the user selects an account, we display its folders in the folder list.<br />
## If the user select a folder, we display its messages in the message list.<br />
## If the user selects a message, we display the message.<br />
<br />
This is most the UI code necessary for basic message reading.<br />
<br />
If new messages arrive, or the user creates a new folder, the UI will be automatically updated. That's all in the above code, thanks to the collection classes and the generic list widget.<br />
<br />
== Smart folders ==<br />
<br />
Smart folders that update immediately when the underlying folders change are also possible with the Collection classes. Given that Collections can merge and subtract collections and dynamically update the result list of these operations, displaying a smart folder is just a matter of assigning the right collection to the message list.<br />
<br />
<br />
For example, to show all mails from 2 inboxes:<br />
var globalInbox = mergeColl(account1.inbox.messages, account2.inbox.messages);<br />
gMessageListE.showCollection(globalInbox);<br />
As new mails are incoming, they will immediately appear, without any further code.<br />
<br />
<br />
For example, to show all mails in AllMail that are '''not''' in Sent folder:<br />
var incomingMails = allMailFolder.messages.subtract(sentFolder.messages);<br />
gMessageListE.showCollection(incomingMails);<br />
As you move mails to the Sent folder, they will immediately disappear from the list.</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/NextGeneration/Collections&diff=1178313Thunderbird/NextGeneration/Collections2017-08-14T23:37:04Z<p>BenB: /* Example code for main window */ onSelectedItem</p>
<hr />
<div>Author: Ben Bucksch (Please check with the author before modifying)<br />
<br />
A recurring pattern across the model of many components is to have a list of objects.<br />
<br />
:For example, a message folder has a list of messages and a list of other sub-folders.<br />
<br />
:An address book is basically just a list of address book cards.<br />
<br />
For most of these lists, it is important to be notified of changes, i.e. that they are observable. Most of these lists also need add and remove functions.<br />
<br />
Instead of re-creating these common functions, we will use a collection library that creates a standard API and implementation, which allows addition/removal, observing, and higher-level functions like merging lists.<br />
<br />
The UI list widgets can then directly subscribe to these observers, and automatically update. The concrete application UI only needs to define how to render a single item, which list to render.<br />
<br />
This will dramatically simplify the API and implementation of the entire application.<br />
<br />
:For example, the address book API needs to have only 2 properties: The name of the AB and the list of cards. The list is the generic collection API and allows addition and removal of cards.<br />
<br />
:Likewise, the account manager only needs a property with the list of accounts, which is a standard collection.<br />
<br />
For the API, see:<br />
* [[Jetpack/Collections]]<br />
* [https://github.com/benbucksch/jscollection/ GitHub]<br />
<br />
== Example code for main window ==<br />
<br />
To illustrate the power of the concept, here is some example code for the 3-pane main window. This sample contains almost all code necessary to display the account list, folder list and message list, and to react to mouse clicks selecting items and loading them. Missing are the generic list widget implementation and the code to display an individual item.<br />
<br />
function start() {<br />
try {<br />
gAccountListE = new Fastlist(E("account-list"));<br />
gFolderListE = new Fastlist(E("folder-list"));<br />
gMessageListE = new Fastlist(E("message-list"));<br />
<br />
gAccountListE.showCollection(gAccounts);<br />
gAccountSelectionObserver.onSelectedItem(null);<br />
gFolderSelectionObserver.onSelectedItem(null);<br />
<br />
gAccountListE.selectedCollection.registerObserver(gAccountSelectionObserver);<br />
gFolderListE.selectedCollection.registerObserver(gFolderSelectionObserver);<br />
gMessageListE.selectedCollection.registerObserver(gMessageSelectionObserver);<br />
} catch (e) { showError(e); }<br />
}<br />
window.addEventListener("load", start, false);<br />
<br />
var gAccountSelectionObserver = new SingleSelectionObserver();<br />
gAccountSelectionObserver.onSelectedItem = function(account) {<br />
gFolderListE.showCollection(account ? account.folders : new ArrayColl());<br />
};<br />
<br />
var gFolderSelectionObserver = new SingleSelectionObserver();<br />
gFolderSelectionObserver.onSelectedItem = function(folder) {<br />
gMessageListE.showCollection(folder ? folder.messages : new ArrayColl());<br />
};<br />
<br />
var gMessageSelectionObserver = new SingleSelectionObserver();<br />
gMessageSelectionObserver.onSelectedItem = function(message) {<br />
if (message) {<br />
showMessage(message);<br />
} else {<br />
// show start page<br />
}<br />
};<br />
<br />
What's happening here is:<br />
# The accounts UI list widget is populated with the accounts list in the model.<br />
# The generic list widget automatically subscribes to changes in the accounts list, and will immediately display any new accounts being added or removed. The same is true for folders and messages.<br />
# The generic list widget also handles selections using mouse and keyboard.<br />
# We instantiate an SingleSelectionObserver for each of the UI list widgets, and let it listen to selections.<br />
# We define what should happen when the user selects an account, a folder and a message.<br />
## If the user selects an account, we display its folders in the folder list.<br />
## If the user select a folder, we display its messages in the message list.<br />
## If the user selects a message, we display the message.<br />
<br />
This is most the UI code necessary for basic message reading.<br />
<br />
If new messages arrive, or the user creates a new folder, the UI will be automatically updated. That's all in the above code, thanks to the collection classes and the generic list widget.<br />
<br />
== Smart folders ==<br />
<br />
Smart folders that update immediately when the underlying folders change are also possible with the Collection classes. Given that Collections can merge and subtract collections and dynamically update the result list of these operations, displaying a smart folder is just a matter of assigning the right collection to the message list.<br />
<br />
<br />
For example, to show all mails from 2 inboxes:<br />
var globalInbox = mergeColl(account1.inbox.messages, account2.inbox.messages);<br />
gMessageListE.showCollection(globalInbox);<br />
As new mails are incoming, they will immediately appear, without any further code.<br />
<br />
<br />
For example, to show all mails in AllMail that are '''not''' in Sent folder:<br />
var incomingMails = allMailFolder.messages.subtract(sentFolder.messages);<br />
gMessageListE.showCollection(incomingMails);<br />
As you move mails to the Sent folder, they will immediately disappear from the list.</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/NextGeneration/Collections&diff=1178312Thunderbird/NextGeneration/Collections2017-08-14T23:33:40Z<p>BenB: /* Example code for main window */ onSel</p>
<hr />
<div>Author: Ben Bucksch (Please check with the author before modifying)<br />
<br />
A recurring pattern across the model of many components is to have a list of objects.<br />
<br />
:For example, a message folder has a list of messages and a list of other sub-folders.<br />
<br />
:An address book is basically just a list of address book cards.<br />
<br />
For most of these lists, it is important to be notified of changes, i.e. that they are observable. Most of these lists also need add and remove functions.<br />
<br />
Instead of re-creating these common functions, we will use a collection library that creates a standard API and implementation, which allows addition/removal, observing, and higher-level functions like merging lists.<br />
<br />
The UI list widgets can then directly subscribe to these observers, and automatically update. The concrete application UI only needs to define how to render a single item, which list to render.<br />
<br />
This will dramatically simplify the API and implementation of the entire application.<br />
<br />
:For example, the address book API needs to have only 2 properties: The name of the AB and the list of cards. The list is the generic collection API and allows addition and removal of cards.<br />
<br />
:Likewise, the account manager only needs a property with the list of accounts, which is a standard collection.<br />
<br />
For the API, see:<br />
* [[Jetpack/Collections]]<br />
* [https://github.com/benbucksch/jscollection/ GitHub]<br />
<br />
== Example code for main window ==<br />
<br />
To illustrate the power of the concept, here is some example code for the 3-pane main window. This sample contains almost all code necessary to display the account list, folder list and message list, and to react to mouse clicks selecting items and loading them. Missing are the generic list widget implementation and the code to display an individual item.<br />
<br />
function start() {<br />
try {<br />
gAccountListE = new Fastlist(E("account-list"));<br />
gFolderListE = new Fastlist(E("folder-list"));<br />
gMessageListE = new Fastlist(E("message-list"));<br />
<br />
gAccountListE.showCollection(gAccounts);<br />
gAccountSelectionObserver.selectedItem(null);<br />
gFolderSelectionObserver.selectedItem(null);<br />
<br />
gAccountListE.selectedCollection.registerObserver(gAccountSelectionObserver);<br />
gFolderListE.selectedCollection.registerObserver(gFolderSelectionObserver);<br />
gMessageListE.selectedCollection.registerObserver(gMessageSelectionObserver);<br />
} catch (e) { showError(e); }<br />
}<br />
window.addEventListener("load", start, false);<br />
<br />
var gAccountSelectionObserver = new SingleSelectionObserver();<br />
gAccountSelectionObserver.onSelectedItem = function(account) {<br />
gFolderListE.showCollection(account ? account.folders : new ArrayColl());<br />
};<br />
<br />
var gFolderSelectionObserver = new SingleSelectionObserver();<br />
gFolderSelectionObserver.onSelectedItem = function(folder) {<br />
gMessageListE.showCollection(folder ? folder.messages : new ArrayColl());<br />
};<br />
<br />
var gMessageSelectionObserver = new SingleSelectionObserver();<br />
gMessageSelectionObserver.onSelectedItem = function(message) {<br />
if (message) {<br />
showMessage(message);<br />
} else {<br />
// show start page<br />
}<br />
};<br />
<br />
What's happening here is:<br />
# The accounts UI list widget is populated with the accounts list in the model.<br />
# The generic list widget automatically subscribes to changes in the accounts list, and will immediately display any new accounts being added or removed. The same is true for folders and messages.<br />
# The generic list widget also handles selections using mouse and keyboard.<br />
# We instantiate an SingleSelectionObserver for each of the UI list widgets, and let it listen to selections.<br />
# We define what should happen when the user selects an account, a folder and a message.<br />
## If the user selects an account, we display its folders in the folder list.<br />
## If the user select a folder, we display its messages in the message list.<br />
## If the user selects a message, we display the message.<br />
<br />
This is most the UI code necessary for basic message reading.<br />
<br />
If new messages arrive, or the user creates a new folder, the UI will be automatically updated. That's all in the above code, thanks to the collection classes and the generic list widget.<br />
<br />
== Smart folders ==<br />
<br />
Smart folders that update immediately when the underlying folders change are also possible with the Collection classes. Given that Collections can merge and subtract collections and dynamically update the result list of these operations, displaying a smart folder is just a matter of assigning the right collection to the message list.<br />
<br />
<br />
For example, to show all mails from 2 inboxes:<br />
var globalInbox = mergeColl(account1.inbox.messages, account2.inbox.messages);<br />
gMessageListE.showCollection(globalInbox);<br />
As new mails are incoming, they will immediately appear, without any further code.<br />
<br />
<br />
For example, to show all mails in AllMail that are '''not''' in Sent folder:<br />
var incomingMails = allMailFolder.messages.subtract(sentFolder.messages);<br />
gMessageListE.showCollection(incomingMails);<br />
As you move mails to the Sent folder, they will immediately disappear from the list.</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/NextGeneration/Collections&diff=1178311Thunderbird/NextGeneration/Collections2017-08-14T23:32:40Z<p>BenB: bold and numbered list</p>
<hr />
<div>Author: Ben Bucksch (Please check with the author before modifying)<br />
<br />
A recurring pattern across the model of many components is to have a list of objects.<br />
<br />
:For example, a message folder has a list of messages and a list of other sub-folders.<br />
<br />
:An address book is basically just a list of address book cards.<br />
<br />
For most of these lists, it is important to be notified of changes, i.e. that they are observable. Most of these lists also need add and remove functions.<br />
<br />
Instead of re-creating these common functions, we will use a collection library that creates a standard API and implementation, which allows addition/removal, observing, and higher-level functions like merging lists.<br />
<br />
The UI list widgets can then directly subscribe to these observers, and automatically update. The concrete application UI only needs to define how to render a single item, which list to render.<br />
<br />
This will dramatically simplify the API and implementation of the entire application.<br />
<br />
:For example, the address book API needs to have only 2 properties: The name of the AB and the list of cards. The list is the generic collection API and allows addition and removal of cards.<br />
<br />
:Likewise, the account manager only needs a property with the list of accounts, which is a standard collection.<br />
<br />
For the API, see:<br />
* [[Jetpack/Collections]]<br />
* [https://github.com/benbucksch/jscollection/ GitHub]<br />
<br />
== Example code for main window ==<br />
<br />
To illustrate the power of the concept, here is some example code for the 3-pane main window. This sample contains almost all code necessary to display the account list, folder list and message list, and to react to mouse clicks selecting items and loading them. Missing are the generic list widget implementation and the code to display an individual item.<br />
<br />
function start() {<br />
try {<br />
gAccountListE = new Fastlist(E("account-list"));<br />
gFolderListE = new Fastlist(E("folder-list"));<br />
gMessageListE = new Fastlist(E("message-list"));<br />
<br />
gAccountListE.showCollection(gAccounts);<br />
gAccountSelectionObserver.selectedItem(null);<br />
gFolderSelectionObserver.selectedItem(null);<br />
<br />
gAccountListE.selectedCollection.registerObserver(gAccountSelectionObserver);<br />
gFolderListE.selectedCollection.registerObserver(gFolderSelectionObserver);<br />
gMessageListE.selectedCollection.registerObserver(gMessageSelectionObserver);<br />
} catch (e) { showError(e); }<br />
}<br />
window.addEventListener("load", start, false);<br />
<br />
var gAccountSelectionObserver = new SingleSelectionObserver();<br />
gAccountSelectionObserver.selectedItem = function(account) {<br />
gFolderListE.showCollection(account ? account.folders : new ArrayColl());<br />
};<br />
<br />
var gFolderSelectionObserver = new SingleSelectionObserver();<br />
gFolderSelectionObserver.selectedItem = function(folder) {<br />
gMessageListE.showCollection(folder ? folder.messages : new ArrayColl());<br />
};<br />
<br />
var gMessageSelectionObserver = new SingleSelectionObserver();<br />
gMessageSelectionObserver.selectedItem = function(message) {<br />
if (message) {<br />
showMessage(message);<br />
} else {<br />
// show start page<br />
}<br />
};<br />
<br />
What's happening here is:<br />
# The accounts UI list widget is populated with the accounts list in the model.<br />
# The generic list widget automatically subscribes to changes in the accounts list, and will immediately display any new accounts being added or removed. The same is true for folders and messages.<br />
# The generic list widget also handles selections using mouse and keyboard.<br />
# We instantiate an SingleSelectionObserver for each of the UI list widgets, and let it listen to selections.<br />
# We define what should happen when the user selects an account, a folder and a message.<br />
## If the user selects an account, we display its folders in the folder list.<br />
## If the user select a folder, we display its messages in the message list.<br />
## If the user selects a message, we display the message.<br />
<br />
This is most the UI code necessary for basic message reading.<br />
<br />
If new messages arrive, or the user creates a new folder, the UI will be automatically updated. That's all in the above code, thanks to the collection classes and the generic list widget.<br />
<br />
== Smart folders ==<br />
<br />
Smart folders that update immediately when the underlying folders change are also possible with the Collection classes. Given that Collections can merge and subtract collections and dynamically update the result list of these operations, displaying a smart folder is just a matter of assigning the right collection to the message list.<br />
<br />
<br />
For example, to show all mails from 2 inboxes:<br />
var globalInbox = mergeColl(account1.inbox.messages, account2.inbox.messages);<br />
gMessageListE.showCollection(globalInbox);<br />
As new mails are incoming, they will immediately appear, without any further code.<br />
<br />
<br />
For example, to show all mails in AllMail that are '''not''' in Sent folder:<br />
var incomingMails = allMailFolder.messages.subtract(sentFolder.messages);<br />
gMessageListE.showCollection(incomingMails);<br />
As you move mails to the Sent folder, they will immediately disappear from the list.</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/NextGeneration/Collections&diff=1178310Thunderbird/NextGeneration/Collections2017-08-14T23:30:30Z<p>BenB: Smart folders</p>
<hr />
<div>Author: Ben Bucksch (Please check with the author before modifying)<br />
<br />
A recurring pattern across the model of many components is to have a list of objects.<br />
<br />
:For example, a message folder has a list of messages and a list of other sub-folders.<br />
<br />
:An address book is basically just a list of address book cards.<br />
<br />
For most of these lists, it is important to be notified of changes, i.e. that they are observable. Most of these lists also need add and remove functions.<br />
<br />
Instead of re-creating these common functions, we will use a collection library that creates a standard API and implementation, which allows addition/removal, observing, and higher-level functions like merging lists.<br />
<br />
The UI list widgets can then directly subscribe to these observers, and automatically update. The concrete application UI only needs to define how to render a single item, which list to render.<br />
<br />
This will dramatically simplify the API and implementation of the entire application.<br />
<br />
:For example, the address book API needs to have only 2 properties: The name of the AB and the list of cards. The list is the generic collection API and allows addition and removal of cards.<br />
<br />
:Likewise, the account manager only needs a property with the list of accounts, which is a standard collection.<br />
<br />
For the API, see:<br />
* [[Jetpack/Collections]]<br />
* [https://github.com/benbucksch/jscollection/ GitHub]<br />
<br />
== Example code for main window ==<br />
<br />
To illustrate the power of the concept, here is some example code for the 3-pane main window. This sample contains almost all code necessary to display the account list, folder list and message list, and to react to mouse clicks selecting items and loading them. Missing are the generic list widget implementation and the code to display an individual item.<br />
<br />
function start() {<br />
try {<br />
gAccountListE = new Fastlist(E("account-list"));<br />
gFolderListE = new Fastlist(E("folder-list"));<br />
gMessageListE = new Fastlist(E("message-list"));<br />
<br />
gAccountListE.showCollection(gAccounts);<br />
gAccountSelectionObserver.selectedItem(null);<br />
gFolderSelectionObserver.selectedItem(null);<br />
<br />
gAccountListE.selectedCollection.registerObserver(gAccountSelectionObserver);<br />
gFolderListE.selectedCollection.registerObserver(gFolderSelectionObserver);<br />
gMessageListE.selectedCollection.registerObserver(gMessageSelectionObserver);<br />
} catch (e) { showError(e); }<br />
}<br />
window.addEventListener("load", start, false);<br />
<br />
var gAccountSelectionObserver = new SingleSelectionObserver();<br />
gAccountSelectionObserver.selectedItem = function(account) {<br />
gFolderListE.showCollection(account ? account.folders : new ArrayColl());<br />
};<br />
<br />
var gFolderSelectionObserver = new SingleSelectionObserver();<br />
gFolderSelectionObserver.selectedItem = function(folder) {<br />
gMessageListE.showCollection(folder ? folder.messages : new ArrayColl());<br />
};<br />
<br />
var gMessageSelectionObserver = new SingleSelectionObserver();<br />
gMessageSelectionObserver.selectedItem = function(message) {<br />
if (message) {<br />
showMessage(message);<br />
} else {<br />
// show start page<br />
}<br />
};<br />
<br />
What's happening here is:<br />
* The accounts UI list widget is populated with the accounts list in the model.<br />
* The generic list widget automatically subscribes to changes in the accounts list, and will immediately display any new accounts being added or removed. The same is true for folders and messages.<br />
* The generic list widget also handles selections using mouse and keyboard.<br />
* We instantiate an SingleSelectionObserver for each of the UI list widgets, and let it listen to selections.<br />
* We define what should happen when the user selects an account, a folder and a message.<br />
** If the user selects an account, we display its folders in the folder list.<br />
** If the user select a folder, we display its messages in the message list.<br />
** If the user selects a message, we display the message.<br />
<br />
This is most the UI code necessary for basic message reading.<br />
<br />
If new messages arrive, or the user creates a new folder, the UI will be automatically updated. That's all in the above code, thanks to the collection classes and the generic list widget.<br />
<br />
== Smart folders ==<br />
<br />
Smart folders that update immediately when the underlying folders change are also possible with the Collection classes. Given that Collections can merge and subtract collections and dynamically update the result list of these operations, displaying a smart folder is just a matter of assigning the right collection to the message list.<br />
<br />
<br />
For example, to show all mails from 2 inboxes:<br />
var globalInbox = mergeColl(account1.inbox.messages, account2.inbox.messages);<br />
gMessageListE.showCollection(globalInbox);<br />
As new mails are incoming, they will immediately appear, without any further code.<br />
<br />
<br />
For example, to show all mails in AllMail that are *not* in Sent folder:<br />
var incomingMails = allMailFolder.messages.subtract(sentFolder.messages);<br />
gMessageListE.showCollection(incomingMails);<br />
As you move mails to the Sent folder, they will immediately disappear from the list.</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/NextGeneration/Collections&diff=1178308Thunderbird/NextGeneration/Collections2017-08-14T23:19:34Z<p>BenB: Sample code for 3 pane window</p>
<hr />
<div>Author: Ben Bucksch (Please check with the author before modifying)<br />
<br />
A recurring pattern across the model of many components is to have a list of objects.<br />
<br />
:For example, a message folder has a list of messages and a list of other sub-folders.<br />
<br />
:An address book is basically just a list of address book cards.<br />
<br />
For most of these lists, it is important to be notified of changes, i.e. that they are observable. Most of these lists also need add and remove functions.<br />
<br />
Instead of re-creating these common functions, we will use a collection library that creates a standard API and implementation, which allows addition/removal, observing, and higher-level functions like merging lists.<br />
<br />
The UI list widgets can then directly subscribe to these observers, and automatically update. The concrete application UI only needs to define how to render a single item, which list to render.<br />
<br />
This will dramatically simplify the API and implementation of the entire application.<br />
<br />
:For example, the address book API needs to have only 2 properties: The name of the AB and the list of cards. The list is the generic collection API and allows addition and removal of cards.<br />
<br />
:Likewise, the account manager only needs a property with the list of accounts, which is a standard collection.<br />
<br />
For the API, see:<br />
* [[Jetpack/Collections]]<br />
* [https://github.com/benbucksch/jscollection/ GitHub]<br />
<br />
== Example code for main window ==<br />
<br />
To illustrate the power of the concept, here is some example code for the 3-pane main window. This sample contains almost all code necessary to display the account list, folder list and message list, and to react to mouse clicks selecting items and loading them. Missing are the generic list widget implementation and the code to display an individual item.<br />
<br />
function start() {<br />
try {<br />
gAccountListE = new Fastlist(E("account-list"));<br />
gFolderListE = new Fastlist(E("folder-list"));<br />
gMessageListE = new Fastlist(E("message-list"));<br />
<br />
gAccountListE.showCollection(gAccounts);<br />
gAccountSelectionObserver.selectedItem(null);<br />
gFolderSelectionObserver.selectedItem(null);<br />
<br />
gAccountListE.selectedCollection.registerObserver(gAccountSelectionObserver);<br />
gFolderListE.selectedCollection.registerObserver(gFolderSelectionObserver);<br />
gMessageListE.selectedCollection.registerObserver(gMessageSelectionObserver);<br />
} catch (e) { showError(e); }<br />
}<br />
window.addEventListener("load", start, false);<br />
<br />
var gAccountSelectionObserver = new SingleSelectionObserver();<br />
gAccountSelectionObserver.selectedItem = function(account) {<br />
gFolderListE.showCollection(account ? account.folders : new ArrayColl());<br />
};<br />
<br />
var gFolderSelectionObserver = new SingleSelectionObserver();<br />
gFolderSelectionObserver.selectedItem = function(folder) {<br />
gMessageListE.showCollection(folder ? folder.messages : new ArrayColl());<br />
};<br />
<br />
var gMessageSelectionObserver = new SingleSelectionObserver();<br />
gMessageSelectionObserver.selectedItem = function(message) {<br />
if (message) {<br />
showMessage(message);<br />
} else {<br />
// show start page<br />
}<br />
};<br />
<br />
What's happening here is:<br />
* The accounts UI list widget is populated with the accounts list in the model.<br />
* The generic list widget automatically subscribes to changes in the accounts list, and will immediately display any new accounts being added or removed. The same is true for folders and messages.<br />
* The generic list widget also handles selections using mouse and keyboard.<br />
* We instantiate an SingleSelectionObserver for each of the UI list widgets, and let it listen to selections.<br />
* We define what should happen when the user selects an account, a folder and a message.<br />
** If the user selects an account, we display its folders in the folder list.<br />
** If the user select a folder, we display its messages in the message list.<br />
** If the user selects a message, we display the message.<br />
<br />
This is most the UI code necessary for basic message reading.</div>BenBhttps://wiki.mozilla.org/index.php?title=Thunderbird/NextGeneration&diff=1178307Thunderbird/NextGeneration2017-08-14T23:02:17Z<p>BenB: New ideas</p>
<hr />
<div>The name "Thunderbird: Next Generation" is a homage to my favorite TV series [http://memory-alpha.wikia.com/wiki/Star_Trek:_The_Next_Generation Star Trek: Next Generation], which took a great thing, and made it even better. Same concept, new ideas, and much better. Several decades later.<br />
<br />
Thunderbird is now over 20 old. The beginnings go back to 1995, with the Mail component in Netscape 2.0. Then came Netscape Communicator 4.5, by another team. 1999-2000, it was turned into Mozilla Seamonkey, then into Thunderbird. The change to Mozilla with XUL and XPCOM was big, but still kept a lot of the backend code. On top of all that are a few decades of hacks.<br />
<br />
It's time for a refreshment, using a clean architecture and using a clear separation between model and view, and a thin view, to allow for easy changes to the view or even completely separate views, e.g. for mobile. Architecturally, change observers will help a lot to keep the components decoupled.<br />
<br />
What's really making this change required, though, is that the Mozilla platform moves away from XUL and XPCOM towards HTML and Servo. Both XUL and XPCOM are base technologies that Thunderbird is written in or that define core parts of it. The Thunderbird project already uses a good part of its development effort just keeping up with Mozilla changes, and this effort is going to increase significantly in the near future (Nov 2017) when XUL extensions are dis commissioned. Mozilla made this drastic move not to deliberately kill a community, but to allow them to make large changes to the platform. These very changes are going to affect Thunderbird massively, being the largest XUL and XPCOM application ever written, even bigger than Firefox itself.<br />
<br />
This means that large parts of the codebase have to be rewritten anyway, in the mid-term to near future. The TB:NG project proposes to use this opportunity to also create clear component separation and clean API that make it easy to learn the codebase and easy to make changes to it. A good extension API surface and more stable extensions would be a side effect of a good internal API.<br />
<br />
= Architecture =<br />
* [[Thunderbird/NextGeneration/MVC|MVC]]<br />
* [[Thunderbird/NextGeneration/Storage|Storage]]<br />
* [[Thunderbird/NextGeneration/Model|Model]] (read first)<br />
* [[Thunderbird/NextGeneration/Services|Services]]<br />
* [[Thunderbird/NextGeneration/View|View]]<br />
* Technical cross-application APIs<br />
* [[Thunderbird/NextGeneration/Collections|Collections]]<br />
* [[Thunderbird/NextGeneration/Error handling|Error handling]]<br />
* [[Thunderbird/NextGeneration/Async functions|Async functions]]</div>BenB