Doc-dev
From Trustedbird
Contents |
Versioning convention
This chapter describes best practices for managing versions of universal messaging client Trustedbird and add-ons developed.
Version identifies the state of a program in its development. It is often associated with a numbering system which allows identification, and in some cases a symbolic name. The symbolic names are not used in this project.
Life cycle of a software
|
| |
|
phase alpha:
| |
|
phase beta:
| |
|
release candidate:
| |
|
GA version (for General Availability):
|
Versioning usage
The version number will be as follows:
Note: the number associated with the revision, can be called maintenance.
Here is how to increment the values of the version number.
|
Values |
Why to increment |
When |
|
major |
|
As soon as developments start. |
|
minor |
|
As soon as developments start. |
|
revision |
|
Depends on the delivery of the final version:
|
|
build |
|
Each time the distribution is published. For the service integration, service quality or final customer. |
Manage tags and branches
Tag THUNDERBIRD_2_0_0_0_RELEASE
|
|
mozilla.org---\-------------------------------\----MILIMAIL_THUNDERBIRD_2_0_0_0_BRANCH------>
\ \
\ \
\----MILIMAIL_V0_BRANCH---> \
\
\
\
Tag THUNDERBIRD_2_0_0_x_RELEASE \
| \
| \
mozilla.org----------------\-------------trunk/mozilla-------------->
SVN structure
+ milimail // Root
|
+ branches // Branches
| + milimail
| + MILIMAIL_THUNDERBIRD_2_0_0_0_BRANCH // Old Milimail/Trustedbird branch based on Thunderbird 2.0.0.0
| + MILIMAIL_THUNDERBIRD_2_0_0_14_BRANCH // Old Milimail/Trustedbird branch based on Thunderbird 2.0.0.14
| + MILIMAIL_V0_BRANCH // Milimail/Trustedbird V0 branch based on Thunderbird 2.0.0.0
|
+ Docs // Documentation
|
+ tags // Tags: old released versions
| + card_viewer_extended
| + crl_over_ldap
| + dsn
| + LanguagePackages
| + mdn_extended
| + milimail // Milimail releases
| + mozilla
| + THUNDERBIRD_2_0_0_0_RELEASE // Thunderbird 2.0.0.0 from mozilla.org
| + THUNDERBIRD_2_0_0_14_RELEASE // Thunderbird 2.0.0.14 from mozilla.org
| + multi-ldap
| + priority
| + send_format_ldap
| + signed_receipt
| + triple_wrapping
| + xsmtp
|
+ trunk // Trunk: current development of Trustedbird, add-ons and packager
+ all-addons
+ card-viewer-extended
+ check-recipients
+ crl-over-ldap
+ l10n
+ fr // French translations of Trustedbird
+ mailXFormsData-sample
+ mailXFormsData-template
+ mailXFormsEngine
+ mdn-extended
+ messages-remote-services
+ mozilla // Current Trustedbird branch based on latest Thunderbird 2.0.0.x
+ multi-ldap
+ notification-viewer
+ out-of-office
+ packager // Ant script to fetch, build and package Trustedbird and add-ons
+ priority-email-gateway
+ send-format-ldap
+ ximfmail
+ ximfmail-company
+ xsmtp
Build Documentation
Dependencies
Linux (Debian)
- build-essential
- ant
- subversion
- libgtk2.0-dev
- libglib1.2-dev
- libidl-dev
- libxt-dev
- zip
- unzip
- flex
- bison
- fakeroot
- dpkg-dev
- python-dev
- autoconf
- libtool
- a Java JDK for ant (java-gcj-compat-dev, sun-java6-jdk, openjdk-6-jdk,...)
Windows
- Microsoft Visual C++ 6 with Service Pack 5 (not Service Pack 6 because Processor Pack needs SP5)
- Visual C++ 6.0 Processor Pack
- Latest MozillaBuild
- Java JDK
- Ant
- Cygwin (for sed.exe and sha1sum.exe, used in Ant build script for add-ons)
See http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites
- Add Ant path, Cygwin path and JDK path to the PATH variable in c:\mozilla-build\start-msvc6.bat:
SET PATH=%PATH%;%MOZ_TOOLS%\bin;C:\mozilla-build\apache-ant-1.8.0RC1-bin\bin;C:\cygwin\bin;C:\Program Files\Java\jdk1.6.0_18\bin
- Set JAVA_HOME as environment variable
- Launch build environment with c:\mozilla-build\start-msvc6.bat
Get build scripts/packager
Read only / through SVN protocol (TCP port 3690)
$ svn co svn://svn.adullact.net/svnroot/milimail/trunk/packager trustedbird
Read-write / through SSH (TCP port 22)
$ svn co svn+ssh://my_username@svn.adullact.net/svnroot/milimail/trunk/packager trustedbird (replace my_username by your Adullact SSH username)
// Copy the file server.properties.template to server.properties $ cp trustedbird/server.properties.template trustedbird/server.properties
// Set your SSH username in server.properties $ sed -i s/SSH_USERNAME/my_username/ trustedbird/server.properties (replace my_username by your Adullact SSH username)
Building
$ cd trustedbird
// Build and package trustedbird and add-ons $ ant build-all
// OR: build and package trustedbird $ ant extract-archive-tb update-tb build-tb package-tb // OR: build and package add-ons $ ant package-addons
How to build a localized Thunderbird 2
See Build Localized Thunderbird.
SSL certificates generation
In order to sign and encrypt messages, you'll need to have certificates.
Certificates can be generated with a Perl script CA.pl supplied with openssl.
- 1) Create a certificate hierarchy in new directory demoCA/
$ /usr/lib/ssl/misc/CA.pl -newca
(type enter when prompted to create a new certificate and fill at least "Common Name" field)
- => demoCA/cacert.pem: root certificate (CA)
- 2) Create a new certificate request for a user
$ /usr/lib/ssl/misc/CA.pl -newreq
- => newkey.pem: user's private key
- => newreq.pem: certificate request for the user
- 3) Sign the certificate request with certificate authority key
$ /usr/lib/ssl/misc/CA.pl -signreq
- => newcert.pem: user's signed certificate
- 4) Convert certificate to DER format (for LDAP)
$ openssl x509 -outform DER -in newcert.pem -out newcert.der
- => newcert.der: user's signed certificate in DER format
- 5) Create PKCS#12
$ /usr/lib/ssl/misc/CA.pl -pkcs12 "Name of the certificate"
- => newcert.p12: root certificate, user's signed certificate and user's private key
- 6) Revoke a certificate
$ openssl ca -revoke newcert.pem $ openssl ca -gencrl -out crl.pem
- => crl.pem: certificate revocation list
Import a user's certificate into Thunderbird
Import newcert.p12 in "Your certificates" tab in Thunderbird certificate manager.
In "Authorities" tab in Thunderbird certificate manager, choose to trust the CA of the certificate to identify email users.
(do again step #2 to #5 to create a new certificate for another user issued by the same authority)
Manipulate DER/ASN1
Decode Base64 -> DER-encoded:
$ openssl base64 -d -in message.b64 -out message.der
View DER-encoded in human-readable text:
$ dumpasn1 message.der OR $ openssl asn1parse -in message.der -inform DER -i -dump
Decrypt DER-encoded with private key:
$ openssl smime -decrypt -in message.der -inform DER -inkey private.key.pem -out message.clear
Other technical documentation
Functional and technical specifications (French version)





