Skip Ribbon Commands
Skip to main content

Distribution

:

Application Configuration Notes: Thunderbird

Documentation and logs for UVM OS and application distribution methodologies

Thunderbird 3.x note:

The instructions below were written for Thunderbird 2.x.  The ISP hook documented below still works with 3.0, but it clearly is no longer "supported" (in as much as Thunderbird can be said to be supported), nor maintained.  Supplemental info on Tbird 3 customization can be found here:

http://blog.uvm.edu/jgm/2009/12/15/thunderbird-3-re-implementing-the-isp-hook-for-customized-deployments/

Silent installation of Thunderbird:
“UVM_Thunderbird_Setup_X.X.X.X” –ms

Build Procedure:

  • Download latest release from Mozilla.com
  • Place the installer in <WDSVol>\Staging\Applications\Thunderbird\OEM
  • Run the BAT file in <WDSVol>\Staging\Applications\Thunderbird\build to repackage the installer
    (NOTE: The script will prompt you to specify the version number)

Resources used in configuration:

  • ISP Hooks for Thunderbird:
    http://developer.mozilla.org/en/docs/Thunderbird_ISP_hooks
    (Would let us install a "UVM Email" account setup option as an extension.  Yeah!)
    • N.B. Do not use the "GatorLink" xml file at this site as a reference... it contans significant syntax errors!
    • This page suggests developing your ISP Hook file as a Thunderbird Entension.  This actually works, but since entensions are installed per-profile in Thunderbird, this really does us no good... users would have to startup T-bird, cancel the config wizard, install the extension, quit, then restart.  Useless if you ask me...
  • 7-Zip and 7-zip extras:
    http://sourceforge.net/project/showfiles.php?group_id=14481&package_id=29413&release_id=416702
    You will need the 7-zip extras to repackage the Thunderbird installer after customization.
  • My brain, confidence that this can be done, and coffee.

UVM Customization file contents:

UVMMail.rdf:
This is an XML file which contains settings that will be used by the Thunderbird account setup wizard.


<?xml version="1.0"?>
<!DOCTYPE RDF>
<RDF:RDF
   xmlns:NC="http://home.netscape.com/NC-rdf#"
   xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <RDF:Description about="NC:ispinfo">
    <NC:providers>
      <NC:nsIMsgAccount about="domain:uvm.edu">

   <!-- IMAP Incoming Server Settings for UVM-->
     <NC:incomingServer>
          <NC:nsIMsgIncomingServer>
            <NC:prettyName>UVM Mail</NC:prettyName>
            <NC:hostName>imap.uvm.edu</NC:hostName>
            <NC:port>993</NC:port>
            <!--socketType=3 means use "SSL" connection-->
            <NC:socketType>3</NC:socketType>
            <NC:nsMsgImapDeleteModel>0</NC:nsMsgImapDeleteModel>
            <!--Setting rememberPassword to "false" sets default behaviour... user can override if desired.-->
            <NC:rememberPassword>false</NC:rememberPassword>
            <!--biffMinutes is equivalent to "Check for new messages every..."-->
            <NC:biffMinutes>29</NC:biffMinutes>
            <NC:type>imap</NC:type>
            <NC:ServerType-imap>                                                
              <NC:nsIImapIncomingServer>
               <NC:serverDirectory>mail/</NC:serverDirectory>
               <NC:cleanupInboxOnExit>true</NC:cleanupInboxOnExit>
               <!--Mark Messages as deleted, do not move to Trash folder-->
               <NC:deleteModel>IMAPDelete</NC:deleteModel>
               <!--Server does not support subfolders that contain both messages and additional subfolders-->
               <NC:dualUseFolders>false</NC:dualUseFolders>
               <!--Use of folder subscriptions is not recommended per ETS SAA Staff-->
               <NC:usingSubscription>false</NC:usingSubscription>
               <NC:useIdle>true</NC:useIdle> 
              </NC:nsIImapIncomingServer> 
            </NC:ServerType-imap>                                              
          </NC:nsIMsgIncomingServer>
        </NC:incomingServer>
  
        <NC:identity>
          <NC:nsIMsgIdentity>
           <NC:replyOnTop>true</NC:replyOnTop>
            <NC:composeHtml>true</NC:composeHtml>
            <!--Set prefs.js entries for "UVMDirectory" so that it is present in local LDAP list
            NOTE: We cannot populate prefs.js here... need to do that outside of this ISP file-->
            <NC:directoryServer>ldap_2.servers.UVMDirectory</NC:directoryServer>
            <!--Set prefs.js entries for "UVMDirectory" as the default by overriding Global settings-->
            <NC:overrideGlobalPref>true</NC:overrideGlobalPref>
          </NC:nsIMsgIdentity>
        </NC:identity>

  <!--UVM Outgoing SMTP Server settings-->
        <NC:smtp>
          <NC:nsISmtpServer>
            <NC:hostname>smtp.uvm.edu</NC:hostname>
            <NC:auth_method>1</NC:auth_method>
            <!--Setting RFC-defined alternative SMTP port as default:
            This should assist with ISP port blocking problems-->
            <NC:port>587</NC:port>
            <!--trySSL=2 means "use TLS" (changed from previous recommendation
to "use TLS if available"-->
            <NC:trySSL>2</NC:trySSL>
            <NC:description>UVM SMTP Server</NC:description>
          </NC:nsISmtpServer>
        </NC:smtp>

  <!-- other options -->
        <NC:smtpRequiresUsername>true</NC:smtpRequiresUsername>
        <NC:smtpCreateNewServer>true</NC:smtpCreateNewServer>
        <NC:smtpUsePreferredServer>true</NC:smtpUsePreferredServer>
        <NC:wizardSkipPanels>true</NC:wizardSkipPanels>
        <NC:wizardShortName>UVM Email</NC:wizardShortName>
        <NC:wizardLongName>UVM Email Account</NC:wizardLongName>
        <NC:wizardShow>true</NC:wizardShow>
        <NC:wizardPromote>true</NC:wizardPromote>
        <NC:emailProviderName>University of Vermont Email</NC:emailProviderName>
        <NC:sampleEmail>mkapoodl@uvm.edu</NC:sampleEmail>
        <NC:sampleUserName>mkapoodl</NC:sampleUserName>
        <NC:emailIDDescription>UVM NetID</NC:emailIDDescription>
        <NC:emailIDFieldTitle>UVM NetID:</NC:emailIDFieldTitle>
        <NC:showServerDetailsOnWizardSummary>false</NC:showServerDetailsOnWizardSummary>
     </NC:nsIMsgAccount>
    </NC:providers>
  </RDF:Description>
</RDF:RDF>


prefs.js:
This file replaces the default (blank) preferences file with settings that cannot be configured in the RDF file, above.


user_pref("ldap_2.servers.UVMDirectory.auth.savePassword", true);
user_pref("ldap_2.servers.UVMDirectory.description", "UVM Directory");
user_pref("ldap_2.servers.UVMDirectory.filename", "abook.mab");
user_pref("ldap_2.servers.UVMDirectory.replication.lastChangeNumber", 0);
user_pref("ldap_2.servers.UVMDirectory.uri", "ldap://ldap.uvm.edu:389/dc=uvm,dc=edu??sub?(objectclass=*)");
user_pref("mail.server.server2.spamLevel", 0);

Repackager script files:

build_Thunderbird.bat:
Simple shell script that uses the "7zr.exe" from the 7-zip extras to extract the contents of the original Thunderbird installer.  We then copy in the customization files, and repackage using the 7zS.sfx file (again from 7-zip extras), using config.txt to specify the command to run after extraction (setup.exe).


@echo off
Echo Cleaning up old builds...
del *.exe
set /P tbver=Enter Thunderbird version number to build (i.e. "2.0.0.1"):
 
Echo Extracting setup files from OEM Installer...
mkdir ..\..\source
..\7zr x ..\..\OEM\*.exe -o..\..\source
 
Echo Copying UVM Custom config files to source...
copy /Y ..\..\custom\UVMMail.rdf ..\..\source\localized\isp\en-US\UVMMail.rdf
copy /Y ..\..\custom\prefs.js ..\..\source\nonlocalized\defaults\profile\prefs.js
 
Echo Repackaging Thunderbird installer...
..\7zr a UVM_Thunderbird_setup_%tbver%.7z ..\..\Source\*
copy /b ..\7zS.sfx + config.txt + UVM_Thunderbird_setup_%tbver%.7z UVM_Thunderbird_setup_%tbver%.exe
 
Echo Cleaning up installation source...
rmdir /s /q ..\..\source
del /f /q UVM_Thunderbird_setup_%tbver%.7z

Additional changes to make in the future?