** DavMail 3.9.1 released **
Another bugfix release, mainly on EWS Caldav support (fix 404 not found).
Also implemented Microsoft Forefront Unified Access Gateway support.

Documentation:
- Doc: additional FAQ entry on shared calendars

Caldav:
- Caldav: first check that email address is valid to avoid InvalidSmtpAddress error on FreeBusy request and new timezone name mapping
- Caldav: New fix for fix 3190219, regression on quote encoding since 3165749 fix
- Caldav: rethrow SocketException to avoid event not available on client connection close or DavMail listener restart
- Caldav: Fix timezone name
- Caldav: fix 3190219, regression on quote encoding since 3165749 fix

Exchange Web Services:
- EWS: fix 3190774, LDAP galfind email address handling, use Mailbox value instead of EmailAddress1/2/3
- EWS: fix NullPointerException in item getContent
- EWS: fix 404 not found with Exchange 2010 calendars

Enhancements
- Convert shell script to unix LF
- Implement Microsoft Forefront Unified Access Gateway logon form compatibility

IMAP:
- IMAP: fix 3201374 envelope superflous space
- IMAP: fix LOGOUT implementation to improve SquirrelMail compatibility

OSX:
- OSX: Avoid sending null message to Growl


** DavMail 3.9.0 released **
Making progress towards 4.0 and full EWS support, some issues remaining on recurring
events. This is mainly a bugfix release, with some Caldav enhancements, huge memory usage fix
on IMAP and a workaround for Linux 64 bits futex issue (deadlock on first connection).

POP:
- POP: test new double dot implementation
- POP: Fix from Stefan Guggisberg, handle invalid CR or LF line feeds in DoubleDotOutputStream

Caldav:
- Caldav: additional timezone names in table
- Caldav: 3132513, implement well-known url, see http://tools.ietf.org/html/draft-daboo-srv-caldav-10
- Caldav: implement a new setting to disable task (VTODO) support: davmail.caldavDisableTasks and probably exclude most broken events
- Caldav: throw exception on empty event body (EWS)
- Caldav: fix multivalued param support in VProperty and always quote CN values

Documentation:
- Doc: Update release guide
- Doc: Additional FAQ entry on public calendar access with iCal
- Doc: Add Manchester wiki review

LDAP:
- LDAP: dump BER content on error
- LDAP: fix 3166460, do not fail on NOT (0xa2) filter

Bugfix:
- New workaround for bug 3168560, load system proxy settings in static block
- Fix 3161913 klauncher says davmail.desktop misses trailing semicolon
- Restore stax-api jar for Java 1.5 compatibility
- Fix 3150426 huge memory usage with IMAP
- Workaround for bug 3168560, synchronize system proxy access
- New NTLMv2 patch: provide fake workstation name and adjust Type3 message flags

EWS:
- EWS: Fix 3165749, exception with quotes in meeting subject and EWS

Webdav:
- Dav: log search response count


** DavMail 3.8.8 released **
Yet another bugfix release with many EWS support enhancements and fixes,
many documentation improvements (still need to update Thunderbird/OSX instructions
to latest versions though).

Documentation:
- Doc: change Maven site plugin version
- Doc: additional external links
- Doc: Add anew reviews page
- Doc: Update POM and release guide
- Doc: move advanced settings to a separate page to keep getting started page simple
- Doc: add SWT bug reference to FAQ, on Ubuntu, notify text conflicts with default theme
- Doc: full iPhone setup instructions
- Doc: update war deployment description
- Doc: Additional smartcard PKCS11 setup instructions with NSS and Coolkey examples

Caldav:
- Caldav: Additional timezone mappings
- Caldav: workaround for Exchange 2010 bug, \n in timezone name generates invalid ICS content
- Caldav: improve timezone rename error message
- Caldav: fix floating timezone in iCal: rename TZID for maximum iCal/iPhone compatibility
- Do not send Exchange 2003 appointment creation request to Exchange 2007

EWS:
- EWS: return HttpNotFoundException on event not found to trigger Lightning workaround
- EWS: fix instancetype field definition: Integer instead of String (fix Caldav filter over EWS)
- EWS: improved email/alias failover fix
- EWS: fix regression in comment
- EWS: additional failover mail build on logon form failure
- EWS: store X-MOZ-SEND-INVITATIONS property to fix no notification issue with Lightning
- EWS: fix Caldav inbox handling over EWS
- EWS: improve timezone handling
- EWS: Update Field list
- EWS: fix 3098008, implement result paging to handle message folders with more than 1000 messages 
- EWS: exclude non message types from searchMessages
- EWS: fix email mapping on LDAP response
- EWS: add BusinessCountryOrRegion contact field

Enhancements
- Additional session create log statement
- New multiple user fields implementation: expect userid|username as login value
- Improve connection pool handling: do not pool simple checkConfig and getVersion connections.
- Implement OTP form with multiple username fields (username and userid)
- Contribution from Geert Stappers: start/stop script
- Improve NTLM authentication detection
- Always use private connection manager to avoid session conflict
- Fixes from audit
- Update javamail to 1.4.3
- Adjust Mime decoder settings (fix)
- Adjust Mime decoder settings
- Workaround for space in cookie name
- Use a_sLgnQS instead of a_sLgn first to support new OWA 8.3.83.4
- Additional NTLM flags to match Firefox flags
- Add UTF-7 support with jcharset
- Failover for misconfigured Exchange server, replace host name in url

SMTP:
- SMTP: fix 3132569, always remove From header to avoid 403 error on send
- SMTP: workaround for misconfigured Exchange servers: failover on Draft message creation through properties. Warning: attachments are lost

IMAP:
- IMAP: Fix 3137275 Imap header fetch bug

WebDav:
- Dav: make sure Destination contains full url and not only path, may fix SMTP send and IMAP copyMessage on Exchange 2003

Carddav
- Carddav: Update contact test

** DavMail 3.8.7 released **
Bugfix and performance release with new Woodstox parser to reduce memory
footprint in EWS mode, more Caldav broken events fixes and IMAP regression
fixes.

Documentation:
- Doc: Update Carddav setup doc
- Doc: ssl setup doc update from kerstkonijn

Enhancements
- Unzip contribs content
- Update rpm ant task parameters to create valid rpm package
- Workaround for malformed cookies with space in name
- From Geert Stappers: add includeantruntime="false" to avoid ant 1.8 warning
- Workaround for invalid redirect location
- Improve error handling: detect redirect to reason=0 as session expired
- Suggestion from Geert Stappers: add svn:ignore property
- RPM spec from Marko Myllynen

Caldav:
- Caldav: Fix timezone support with Exchange 2010 SP1
- Caldav: use rebuild event from MAPI properties failover in all error cases
- Caldav: add requestFocus() to bring notification dialog to foreground
- Caldav: added edit notifications checkbox in settings frame

IMAP:
- IMAP: include current folder in recursive search
- IMAP: encode source path in copyMessage
- IMAP: new test case to show Thunderbird perf issue
- IMAP: Fix 3109303 Handle null string during mail fetch
- IMAP: fix nullpointerException in header fetch
- IMAP: fix 3106803, IMAP client stuck scanning Inbox, fix header and body fetch in same request
- IMAP: throw error on 440 Login Timeout to avoid message corruption

LDAP:
- LDAP: do not log error on OSX groups request

EWS:
- EWS: Upgrade woodstox version to use enhanced base64 conversion (reduced memory usage)
- EWS: allow autodiscover after authentication failure
- EWS: fix contact email update

OSX:
- OSX: search and replace on existing file, spotted by Geert Stappers

** DavMail 3.8.6 released **
First release with automatic EWS mode detection, also includes many bugfixes
on LDAP support over EWS, IMAP enhancements, Exchange 2010 SP1 cookie bug workaround
and a brand new UI frame to let users edit Caldav notifications.

LDAP:
- LDAP: fix galfind search: add uid in response and use cn in fullsearch filter
- LDAP: additional EWS attributes
- LDAP: additional attributes for iPad

Enhancements:
- Fix 3103349: Cannot login if display name contains [brackets], regression after first patch
- Fix 3103349: Cannot login if display name contains [brackets]
- configFilePath is null in some test cases
- Added passcode as token field for RSA support
- Add DavMail version in welcome IMAP and SMTP header
- Update test case
- Handle exceptions on invalid UTF-8 characters or unexpected content triggered by XmlStreamReader.getElementText (based on patch 3081264)
- Add exchange 2010 PBack cookie in compatibility mode
- Novell iChain workaround

POP:
- POP: add version in welcome banner

Caldav:
- Caldav: Fix bug in Dav mode with broken events dtstart -> dtend
- Caldav: fix french notification message
- Caldav: protect ':' in VCALENDAR property params
- Caldav: initial edit notification implementation
- Caldav: Create fake DTEND on broken event
- Caldav: fix nullpointer in VCalendar on missing DTEND
- Caldav: implement main calendar folder rename
- Caldav: use i18n calendar name as display name for iCal
- Caldav: avoid renaming default calendar to null

EWS:
- Ews: improve ResolveNames implementation, parse addresses and phone attributes
- EWS: implement failover on OWA authentication failure (e.g. with outlook.com)
- Ews: improve invalid item in calendar error handling
- EWS: improve resolveNames logging
- EWS: add enableEws flag in UI settings frame
- EWS: automatically detect Webdav not available and set davmail.enableEws flag

IMAP:
- IMAP: failover in message copy on 404 not found
- IMAP: Fix append with no optional parameters
- IMAP: additional test cases
- IMAP: fix from kolos_dm: implement fake line count in BODYSTRUCTURE and [] block in IMAPTokenizer
- IMAP: fix from kolos_dm: implement attachment name in BODYSTRUCTURE
- IMAP: improve logging, do not log message content on 404 or 403
- IMAP: fix from kolos_dm: In-Reply-To is not email header and unfold header to remove CRLF in ENVELOPE response
- IMAP: merge fix from Kolos, search command with message sequence set
- IMAP: implement index (non uid) COPY
- IMAP: workaround for broken message (500 error), rebuild mime message from properties
- IMAP: send error on idle command without selected folder (Outlook)

Documentation:
- Doc: fixes and updates on ssl setup and build
- Doc: update roadmap
- Doc: Update architecture image
- Doc: update ssl server certificate doc
- Doc: Document PKCS12 self signed certificate creation to enable SSL in DavMail
- Doc: iPhone screenshots

SWT:
- SWT: Custom AWT event queue to trap X errors and avoid application crash
- SWT:enable debug mode

** DavMail 3.8.5 released **
Includes much progress on Caldav over EWS support, a few regression fixes 
and improved IMAP BODYSTRUCTURE implementation for complex messages.

Bugfixes:
- Fix regression in Exchange 2007 over Dav session

Enhancements:
- Detect and submit language selection automatically
- More fixes from audit
- Fixes from audit
- Restore cookies on error
- Improve buildSessionInfo failover
- Fix ssl trustmanager error handling
- Enable Webdav/Galfind failover on Exchange 2007
- Workaround for basic authentication on /exchange and form based authentication at /owa

Caldav:
- Caldav: detect invalid events with empty dtstart property
- Caldav: implement mozilla alarm flags X-MOZ-LASTACK and X-MOZ-SNOOZE-TIME over EWS
- Caldav: EWS, rebuild attendee list from properties
- Caldav: test principal request
- Caldav: fix 3067915 getRangeCondition too restrictive
- Caldav: implememnt Busy flag over EWS and refactor create code
- Caldav: fix create allday event over EWS and check if current user is organizer
- Caldav: Fixed regression in allday event handling
- Caldav: improve EWS implementation
- Caldav: improve timezone error handling
- Caldav: remove empty properties
- Caldav: avoid invalid X-CALENDARSERVER-ACCESS and CLASS
- Caldav: avoid empty X-CALENDARSERVER-ACCESS and CLASS
- Caldav: reinsert the deleteBroken check
- Caldav: fix VProperty parser
- Caldav: additional VCalendar properties for rebuilt item: VALARM (reminder)
- Caldav: additional VCalendar properties for rebuilt item: RRULE, EXDATE, CLASS
- Caldav: failover for broken event, rebuild VCalendar content from raw properties
- Caldav: fix 3063407, regression in sendPrincipal

Carddav:
- Carddav: fix null value in email address
- Carddav: fix email address handling over EWS

Exchange Web Services:
- EWS: fix 3047563 double inbox
- EWS: more caldav ews fixes

SMTP:
- SMTP: rewrite getAllRecipients to disable strict header check
- SMTP: new try at encoding fix: set mailOverrideFormat and messageFormat

Documentation:
- Upgrade maven site-plugin and update release guide

IMAP:
- IMAP: fix 3072497 Imap server too picky about case
- IMAP: improve BODYSTRUCTURE implementation, make it recursive
- IMAP: implement partial header fetch

LDAP:
- LDAP: new attribute mapping
- LDAP: cache current hostname value in sendComputerContext to improve iCal address completion performance
- LDAP: additional ignore attributes
- LDAP: add gidnumber to attribute ignore list
- LDAP: fix regression on iCal 3 search completion

SWT:
- SWT: allow libswt-gtk-3.6-java on debian, available from ppa:aelmahmoudy/ppa

** DavMail 3.8.4 released **
Yet another bugfix release with more regressions fixes on SMTP,
a few LDAP fixes and a caldav timezone update. 

Documentation:
- Doc: Update release guide
- Doc: Update swt version in maven pom

SMTP:
- SMTP: try to force IMS encoding mode according to message contenttype
- SMTP: switching back to Draft then send mode over DAV for calendar messages
- SMTP: switching back to Draft then send mode over DAV
- SMTP: new duplicate message-id detection implementation, no need to search Sent folder

LDAP:
- LDAP: improve EWS filter support
- LDAP: another gallookup detection fix to improve address completion in thunderbird

Carddav:
- Carddav: improve OSX client detection

Enhancements
- Fixes from audit

Caldav:
- Caldav: accept login as alias in caldav principals path
- Caldav: basic move item implementation
- Caldav: adjust Lightning bug workaround
- Caldav: yet another timezone fix, adjust Outlook created event time before allday conversion
- Caldav: fix regression on meeting response subject

** DavMail 3.8.3 released **
Another bugfix release with major regressions fixed:
missing calendar meeting messages and delivery status notification on
some external addresses. Also includes improved autodiscover support.

Enhancements:
- Disable broken rpm generation
- Fix test cases
- Upgrade swt to 3.6
- workaround for TLS Renegotiation issue, 
  see http://java.sun.com/javase/javaseforbusiness/docs/TLSReadme.html    
- Switch back to StreamReader.next instead of nextTag
- Fix autodiscover support
- Merge patch 3053324: Implement per service SSL flag (patch provided by scairt)
- Fix XMLStreamUtil regression
- Refactor XMLStreamUtil

Exchange Web Services:
- EWS: improve autodiscover implementation
- EWS: fix possible NullPonterException
- EWS: implement autodiscover to find actual EWS endpoint url

Caldav:
- Caldav: extend Lightning broken tests to all 1.* versions
- Caldav: switch back to contentclass to get calendarmessages over webdav
- Caldav : revert previous changes and fix meeting cancel support (IPM.Schedule.Meeting.Canceled)
- Caldav: move to trash on processItem
- Caldav: fix request parser regression on nextTag
- Caldav: improve filter handling, support VTODO/VEVENT comp-filter
- Caldav: make timezone name retrieval more robust

SMTP:
- SMTP: make duplicates check optional with davmail.smtpCheckDuplicates setting
- SMTP: always remove From header with Exchange 2007 and 2010
- SMTP: Improve message on MAIL FROM without authentication
- SMTP: experimental, advertise 8BITMIME

IMAP:
- IMAP: implement shared mailbox access

Documentation:
- minor doc fix
- Doc: Additional Exchange Webdav setup documentation
- Add ohloh widget on home page
- Doc: a few doc fixes and update roadmap

** DavMail 3.8.2 released **
Bugfix release with improved Exchange 2010 IMAP support, CardDav fixes and
improved error handling

Enhancements:
- Disable SWT on Java 7
- Update debian package description and categories
- fix 2995990: Add support for already authenticated users
- Fix missing hide password in log over IMAP
- More session creation enhancements, fix public folder test when /public is 403
- Refactor email and alias retrieval: always use options page with Exchange 2007
- Improve socket closed error handling
- Try default form url on authentication form not found
- Add Java Service Wrapper contribution from Dustin Hawkins

Caldav:
- Caldav: move delete broken event logic to DavExchangeSession
- Caldav: delete broken events when davmail.deleteBroken is true
- Caldav: improve event logging, include subject

IMAP:
- IMAP: handle 507 InsufficientStorage error
- IMAP: fix regression in NOT DELETED filter

Documentation:
- Doc: Update OSX directory setup documentation

DAV:
- DAV: Encode apos in urlcompname used in DAV search request

EWS:
- EWS: fix single message in folder with Exchange 2010 bug
- EWS: implement loadVTimezone for Exchange 2010

SMTP:
- SMTP: fix regression on bcc handling
- SMTP: convert Resent- headers, see 3019708

LDAP:
- LDAP: avoid galLookup in iCal searches

Carddav:
- Carddav: Fix email update over EWS

** DavMail 3.8.1 released **
Includes a full refactoring of Vcalendar content handling, much progress on
Exchange Web Services support, LDAP optimizations and many other bufixes.

Exchange Web Services:
- EWS: hard method: delete/create on update
- EWS: Fix DeleteItem for CalendarItem
- EWS: implement loadVtimezone, get user timezone id from OWA settings
- EWS: Fix FieldURIOrConstant test
- EWS: separate domain from userName in NTLM mode
- EWS: MultiCondition galFind
- EWS: implement basic galFind search
- EWS: implement resolvenames response parsing
- EWS: fix subfolder search on Exchange 2010
- EWS: implement user availability (freebusy) and shared folder access
- EWS: implement sendEvent
- EWS: force urlcompname only on create
- EWS: implement ResolveNames method
- EWS: Apply workaround to events
- EWS: workaround for missing urlcompname on Exchange 2010, use encoded ItemId instead
- EWS: rename equals to isEqualTo and format search date
- EWS: dynamic version detection
- EWS: Exchange 2010 message handling
- EWS: Exchange 2010 folder handling
- EWS: Exchange 2010 compatibility: add test cookie, access /ews/exchange.asmx endpoint

Caldav:
- Caldav: Fix missing TZID in DTSTART from iPhone
- Caldav: return reoccuring events on time-range request
- Caldav: Fix METHOD on create from iPhone
- Caldav: need to encode colon (:) in urlcompname search, implement a last failover on item search
- Caldav: implement 2899430, change the subject line when replying to invites
- Caldav: workaround for Lightning 1.0b2 bug
- Caldav: disable caldav inbox with Lightning 1.0b2
- Caldav: fix regression in fixVCalendar (missing organizer)
- Caldav: skip empty lines
- Caldav: Fix regressions in Vcalendar handling
- Caldav: fix nullpointer in VCalendar
- Caldav: fix regressions and do not filter on outlookmessageclass
- Caldav: major refactoring of event content handling and notifications
- Caldav: switch to new VCalendar parser/patcher
- Caldav: implement VALARM in VCalendar
- Caldav: more vcalendar patches
- Caldav: start new VCalendar fixICS implementation
- Caldav: call fixICS on download
- Caldav: reenable Lightning 1.0b2 bug workaround
- Caldav: failover for 404 not found on items containing '+' in url, search item by urlcompname to get permanenturl

LDAP:
- LDAP: create a separate thread only for person/contact searches
- LDAP: implement galFind MultiCondition over webdav and improve search by mail
- LDAP: need to galLookup when search attribute is not in galfind result
- LDAP: another search attribute mapping fix
- LDAP: code cleanup and some galfind search fixes
- LDAP: fix 3043659, include entries starting with Z
- LDAP: Improve sizeLimit handling and ignore attributes
- LDAP: a few more attribute fixes
- LDAP: move galLookup to DavExchangeSession
- LDAP: progress on EWS LDAP implementation and refactoring
- LDAP: fix regression on OSX directory request on iCal start: filter invalid imapUid condition
- LDAP: use sizeLimit in contactFind
- LDAP: Fix OSX directory search on uid

Enhancements:
- Improve error handling
- Add custom cookie policy to support extended host name
- Fixes from audit

Bugfixes:
- Fix regression in getAliasFromMailboxDisplayName
- Deb: Fix regression in debian desktop link

Dav:
- Dav: disable galFind on error

SMTP:
- SMTP: compare actual email address, not email with alias
- SMTP: no need to remove From header with new sendMessage implementation

SWT:
- SWT: fix 2992428, hide instead of dispose on close

Carddav:
- Carddav: refactor VCard handling to merge with VCalendar code
- Carddav: disable contact picture handling on Exchange 2007
- Carddav: implement range search

** DavMail 3.8.0b2 released **
Fixes the most obvious regressions in 3.8.0b1 and some documentation
updates on Carddav. Note for EWS only users: add davmail.enableEws=true in
davmail.properties

Caldav: fix sendEvent regression, conflict on outbox notifications
Caldav: improve HttpNotFound message
Caldav: Refactor getItem
Doc: fix carddav thunderbird doc
Doc: update left menu
Doc: set source encoding to UTF-8 in maven pom
Doc: update roadmap
Doc: Basic OSX setup instructions
Doc: thunderbird carddav setup with SOGO connector
Doc: Update homepage and project description
Carddav: additional TEL properties
Caldav: fix MKCALENDAR http status code: return 201 instead of 207
Carddav: add fburl field
Caldav: Another request parsing bug: handle empty elements
Caldav: fix regression in REPORT requests parsing

** DavMail 3.8.0b1 released **
First public release after major refactoring to implement Exchange 2010 and Exchange 2007 without
Webdav support. This implementation is based on Exchange Web Services. EWS support is not yet
complete: global address list search and free/busy support is missing.
This release includes the new Carddav service sponsored by French Defense / DGA through 
project Trustedbird. OSX notifications will now use Growl if available.

Carddav:
- Carddav: another urlcompname encoding fix
- Carddav: generate OSX compatible VCARD photo and change addressbook-home-set with OSX Address Book
- Carddav: use new ExchangePropPatchMethod in full contact create/update
- CardDav: use new ExchangePropPatchMethod to create haspicture boolean property
- Carddav: improve error logging on photo update failure
- Carddav: use email1 as default email on update
- Carddav: fix multiple mail MAPI properties handling
- Carddav: fix GET request on folder support for SOGO
- Carddav: encode contact picture url
- Carddav: return 404 not found on missing folder
- Carddav: fix line folding in generated VCARD
- Carddav: Fix regression in single value multiline properties
- Carddav: add gender property
- Carddav: adjust bday to timezone
- Carddav: another anniversary property candidate
- Carddav: Add Anniversary support
- Carddav: Fix bday generation
- Carddav: fix iPhone BDAY parser
- Carddav: adjust fields accepting multiple values
- Carddav: fix semicolon encoding in compound value
- Carddav: workaround for iPhone categories encoding
- CardDav: do not encode simple (not compound) properties
- Carddav: fix regression in VCardWriter
- Carddav: always encode values
- Carddav: protect semicolon
- Carddav: iPhone personalHomePage support
- Carddav: ignore key prefix in VCARD
- Carddav: resize contact picture
- Carddav: Fix lower case param names
- Carddav: add contact create or update log statement
- Carddav: handle param values as parameter list
- Carddav: encode photo href
- Carddav: fix regression on VCARD photo detection
- Carddav: use urlcompname value instead of path to get contact details
- Carddav: fix case insensitive param values
- Carddav: add haspicture to test case
- Carddav: Implement picture delete and private flag over EWS
- Carddav: handle picture delete
- Carddav: fix boolean field handling
- Carddav: Remove missing properties on update
- Carddav: implement CLASS (private) flag
- Carddav: convert image to jpeg over EWS
- Carddav: implement photo update over WebDav
- Carddav: implement photo handling over EWS
- Carddav: implement categories support in EWS mode
- Carddav: implement categories
- Carddav: get SMTP email address
- Carddav: move value decoding back to VCardReader
- Carddav: decode multiline values
- Carddav: encode comma and \n in values
- CardDav: make getContactPhoto more robust
- Carddav: iPhone iOS4 compatibility
- Carddav: implement contact photo support (readonly)
- Carddav: implement quoted param value support
- Carddav: bday, assistant, manager and spouse properties
- Carddav: other address and homeposteofficebox properties
- Carddav: instant messaging and role properties
- Carddav: more properties
- Carddav: Implement phone, address and email properties
- Carddav: handle multiple values on a single line and add new properties
- CardDav: fix contact folder path handling and add create contact unit test
- Carddav: refactor Contact creation and create VCardReader
- CardDav: move Contact getBody to ExchangeSession and add more attributes support
- CardDav: map contact fields
- CardDav: improve automatic address book setup for OSX
- CardDav: implement OSX AddressBook requests: current-user-privilege-set property, current-user-principal on root request, addressbook-home-set on principal request, addressbook-multiget REPORT request with address-data response, urn:ietf:params:xml:ns:carddav namespace

Enhancement:
- Disable preemptive authentication when adding NTLM scheme
- Fixes from audit
- Force log file encoding to UTF-8
- Add new davmail.logFileSize setting
- Use linux friendly path separator in jsmooth config files
- Fixes from audit
- Major refactoring: use straight inpustream instead of reader everywhere
- Disable ConsoleAppender in gui mode
- Add missing Junit jar
- Cleanup: System.setProperty of httpclient.useragent no longer needed
- Improve item not found logging
- Log gateway stop at info level
- Improve empty keystore password handling to avoid NullPointerException
- Fix 2999717 redirect console to /dev/null in desktop file

Exchange Web Services:
- EWS: fix urlcompname encoding issues
- EWS: fix folder name ampersand encoding issue
- EWS: return 403 forbidden on ErrorAccessDenied
- EWS: xml encode values
- EWS: use UTF-8 to decode request on error
- EWS: send extended properties first on update
- EWS: format datereceived date
- EWS: fix bug in UnindexedFieldURI
- EWS: update createMessage bcc handling to match sendMessage 
- EWS: implement bcc support in sendMessage
- EWS: implement send message (SMTP)
- EWS: fixes from audit
- EWS: fix CalendarItem creation, no need to wrap ics in a MIME message
- EWS: implement calendar event create or update, processed field, subfolder path handling 
- EWS: fix internaldate conversion
- EWS: convert read flag to boolean and noneMatch/etag to detect create or update on items
- EWS: use UnindexedFieldURI for read flag
- EWS: fixes for Caldav and Carddav compatibility
- EWS: fix folder id regression
- EWS: fix country contact property mapping
- EWS: implement getItem and various contact handling fixes
- EWS: map all contact properties
- EWS: implement more contact and event methods
- EWS: implement copy method
- EWS: datereceived flag support
- EWS: handle bcc field
- EWS: various flag handling fixes, implement message delete
- EWS: implement getContent
- EWS: fix iconIndex flag property
- EWS: implement create and update message
- EWS: fix single value in MultiCondition handling
- EWS: rely on uid (PR_SEARCH_KEY) instead of permanentUrl to detect imap uid changes
- EWS: implement searchMessages
- EWS: fix bug in MultiCondition search
- EWS: fix from audit
- EWS: implement folder handling, including the new MoveFolderMethod
- EWS: move mailbox folder urls to DavExchangeSession
- EWS: use searchContacts in contactFind
- EWS: fix regression in deleted flag handling
- EWS: refactor contactFind, use new Condition API
- EWS: still more WebDav code to DavExchangeSession
- EWS: move more WebDav code to DavExchangeSession
- EWS: Various fixes after refactoring on DASL request generation
- EWS: in progress refactoring of contacts and events handling
- EWS: implement folder ctag, remove deprecated foldername property
- EWS: move WebDav message write and delete to DavExchangeSession
- EWS: move WebDav code to DavExchangeSession
- EWS: refactor IMAP search, use Conditions classes instead of string search filder
- EWS: Use int values to create ExtendedFieldURI propertyTags
- EWS: map folder path to and from IMAP
- EWS: implement NotCondition and public folder access
- EWS: implement IndexedFieldURI and InternetMessageHeader
- EWS: refactor search to use classes instead of String filters
- EWS: implement MultipleOperandBooleanExpression (And, Or, Not conditions)
- EWS: refactor folder search, create abstract getFolder methods
- EWS: start ExchangeSession refactoring to extract Dav calls
- EWS: refactor options, use enums
- EWS: implement basic SearchExpression restriction
- EWS: Implement CreateFolder, DeleteFolder and CreateItem, refactor options
- EWS: retrieve and decode MIME content
- EWS: add standard field additional property, implement IncludeMimeContent in GetItem, add DeleteItemMethod
- EWS: Generic item property mapping
- EWS: refactor EWS code
- EWS: experimental HttpClient based EWS methods

Caldav:
- Caldav: fix time-range filter support in EWS mode
- Caldav: move calendar on displayname update
- Caldav: partial MKCALENDAR implementation
- Caldav: implement time-range request
- Caldav: add missing dtstart field
- Caldav: improve 404 error handling
- Caldav: fix regression in processItem
- Caldav: UTF-8 encode report body
- Caldav: catch any exception in reportItems
- Caldav: Process request before sending response to avoid sending headers twice on error
- Caldav: Workaround for Lightning/1.0b2 href encoding bug in REPORT requests
- Caldav: move processItem logic back to CaldavConnection
- Caldav: Workaround for emClient broken href encoding
- Caldav: remove buildCalendarPath method
- Caldav: allows mixed case contentType in event MIME message (fix Unable to get event error)
- Caldav: fix 3014204 missing timezone
- Caldav: fix 2902372 private flag handling undex iCal 4 (OSX 10.6 Snow Leopard)
- Caldav: send current-user-principal on principals folder for iCal
- Caldav: workaround for iCal bug: do not notify if reply explicitly not requested
- Caldav: add CRLF after END:VCALENDAR to comply with RFC
- Caldav: fix regression in getItem, allow urn:content-classes:calendarmessage contentClass
- Caldav: Fix Carddav etag handling (additional Head request) and implement card delete
- Caldav: Implement Carddav create (only a few attributes mapped)
- Caldav: Implement basic Carddav search requests

Dav:
- Dav: more property update fixes
- Dav: patch filter on invalid Exchange Webdav response
- Dav: new ExchangePropPatchMethod to handle custom exchange propertyupdate and invalid response tag names
- Dav: refactor getContentReader and fix regression on null date value
- Dav: fix nullpointer in DavExchangeSession
- Dav: handle null properties with new createMessage
- Dav: another datereceived fix
- Dav: switch back to DAV:uid, used mainly in POP service (case sensitive)
- Dav: fix bug 3022451 in new search filter implementation with empty sub conditions
- Dav: Add folder unit tests
- Dav: add private and sensitivity fields
- Dav: implement timezone mapping for Exchange 2007, should fix the allday issue with Outlook
- Dav: use search expression to request ishidden
- Dav: fix regression in deleteItem
- Dav: fix regression 3020385 on folder handling
- Dav: Refactor folder search to use searchItems
- Dav: use Email1EmailAddress mapi property to get mail attribute, add uid attribute
- Dav: fix from audit
- Dav: add unit tests, move buildCalendarPath logic to getFolderPath

Bug fixes:
- Use private MultiThreadedHttpConnectionManager with NTLM to avoid persistent authentication on connection issues
- Fix regression in AbstractConnection: return null instead of empty string on closed connection
- Fix 3001579: improve NTLM support

IMAP:
- IMAP: add uidNext MAPI property (not available under Exchange 2003)
- IMAP: fix deleted flag handling over Webdav
- IMAP: fix flag handling in createMessage
- IMAP: new seen flag test case
- IMAP: fix regression on imap uid restore
- IMAP: fix 3023386, support BODY.PEEK[1.MIME] partial fetch
- IMAP: new unit tests and fix $Forwarded flag removal
- IMAP: implement deleted/undeleted search as condition instead of post filter
- IMAP: add IMAP unit test
- IMAP: fix 3014787 remove property over WebDav
- IMAP: implement last message (simple *) fetch range
- IMAP: send required "* SEARCH" on empty search response
- IMAP: Add a new hidden davmail.deleteBroken setting to delete broken messages
- IMAP: implement a new imapAutoExpunge setting to delete messages immediately over IMAP

SMTP:
- SMTP: send message directly without creating a Draft message to preserve Message-id
- SMTP: fix log message
- SMTP: fix 3024482, avoid duplicate messages with gmail
- SMTP: Fix DoubleDotInputStream pushback size
- SMTP: last CRLF is not included in message content

Documentation:
- Doc: javadoc and code cleanup
- Doc: fix default domain label
- Doc: new FAQ entry on OSX auto start "Login Items"
- Doc: typos fixes from Raphael Fairise
- Doc: update release guide
- Doc: add a new mail.strictly_mime FAQ entry to enable quoted-printable

POP:
- POP: fix regression in TOP command
- POP: fix message termination, append CRLF only when necessary
- POP: replace deprecated write method, use DoubleDotOutputStream instead
- POP: allow space in username

LDAP:
- LDAP: fix contact attributes reverse mapping
- LDAP: improve contact attribute mapping and add a few new properties
- LDAP: fix attribute map
- LDAP: fix regression after EWS refactoring
- LDAP: use imap uid as ldap uid
- LDAP: use PR_SEARCH_KEY instead of DAV:uid as uid string

OSX:
- Exclude growl from non OSX packages
- Fix growl build project name
- OSX: implement growl support
- include jnilib in OSX package
- libgrowl-0.2 with libgrowl.jnilib compiled on OSX Snow Leopard
- set libgrowl version to 0.2
- rename generated jar with version, exclude test classes and create Manifest with Michael Stringer author
- Improve Growl exception handling, remove System.out and a few fixes from audit
- Initial growl import from http://forums.cocoaforge.com/viewtopic.php?f=6&t=17320

** DavMail 3.6.6 released **
This release is mainly focused on IMAP enhancements, including IDLE (RFC2177)
aka "Push Mail" support and other protocol compliance fixes, particularly on
partial fetch. NTLMv2 is also supported thanks to the JCIFS library.

Documentation:
- Doc: update doc and roadmap
- Doc: adjust settings message
- Doc: improve server/client certificates description
- Doc: new FAQ entry on message deleted over IMAP still visible through OWA
- Doc: fix maven site generation

IMAP:
- IMAP: send BAD instead of BYE on exception
- IMAP: fix 2992976, implement complex index and uid range in SEARCH
- IMAP: Handle exception during IDLE
- IMAP: add a new setting to enable/disable IDLE
- IMAP: use getRawInputStream instead of writeTo to avoid MIME message changes, cache message body in SharedByteArrayInputStream
- IMAP: poll folder every 30 seconds in IDLE mode, clear cached message
- IMAP: implement IDLE extension (RFC2177)
- IMAP: fix 2971184, do not decode content in partial fetch (replace getDataHandler with PartOutputStream)

Enhancements:
- Exclude redline lib from distribution packages
- Use https in default Exchange url
- Make sure log messages are not localized
- Remove unused messageId field
- Do not shutdown connection manager on restart
- Allow Exchange server to use gzip compression
- Sample SocketAppender configuration
- Improve NTLM mode detection
- JCIFS based NTLMv2 implementation
- Hardcode /owa/ path in getAliasFromOptions and getEmailFromOptions for Exchange 2007, improve failure message
- Improve xmlEncode, use compiled static patterns

Caldav:
- Caldav: fix 2992811, missing timezones
- Caldav: fix 2991030 tasks disappeared
- Caldav: add VTODO to supported-calendar-component-set response
- Caldav: fix regression in getAllDayLine()
- Caldav: make shared calendar test case insensitive
- Caldav: 0 or no value in caldavPastDelay means no limit

** DavMail 3.6.5 released **
This release includes a major refactoring of the IMAP FETCH implementation
to improve performance and provide RFC compliant partial fetch. The Carddav
support sponsored by french DGA through project TrustedBird is now included
in the roadmap. Private events filter on shared calendar is also available
and DavMail can now retrieve proxy settings directly from system configuration.

SMTP:
- SMTP: implement AUTH LOGIN username (with optional initial-response, see RFC2554)

IMAP:
- IMAP: Keep a single message in MessageList cache to handle chunked fetch, reenable maxSize in ImapConnection.
- IMAP: implement subparts partial fetch
- IMAP: Fix message write, double dot only for POP, not IMAP
- IMAP: Do not advertise not yet supported custom flags
- IMAP: fix from audit
- IMAP: major FETCH implementation refactoring, make code simpler and more efficient
- IMAP: add BODY.PEEK[index] support
- IMAP: improve partial fetch support
- IMAP: fix 2962071, quote folder names in STATUS response
- IMAP: allow partial part fetch
- IMAP: fix regression on unknown parameter handling
- IMAP: implement part fetch (BODY[1]) 
- IMAP: detect unsupported parameter
- IMAP: fix 2973213, escape quotes in subject
- IMAP: fixes to improve JavaMail support

Doc:
- Doc: move CardDav reference before architecture schema
- Doc: update project description in Maven pom and ant package
- Doc: update project description and RoadMap, announce CardDav support sponsored by french DGA through project Trustedbird
- Doc: update roadmap

Enhancements:
- Add a new setting to disable startup notification window (contribution from jsquyres)
- Improve getAliasFromOptions to retrieve alias with custom dn
- Workaround for NTLM authentication only on /public
- Add a new setting to retrieve proxies from system configuration
- Fix empty setting behavior: return null instead of empty string
- Sort properties file
- Fix new RPM ant task definition
- Improve public folder url check
- Experimental rpm package build

Carddav:
- Carddav: refactor folder handling code to prepart CardDav support

Caldav:
- Caldav: fix broken inbox, missing instancetype in search request and add is null in search query
- Caldav: do not try to access inbox on shared calendar (to avoid 440 login timeout errors and session reset)
- Caldav: exclude private events on shared or public calendar PROPFIND
- Caldav: fix regression on invalid events handling, just warn on broken events
- Caldav: drop timezone when converting allday events to client

** DavMail 3.6.4 released **
Well, yet another bugfix release, with improved IMAP support,
SMTP enhancements to support Eudora, NTLM proxy authentication
support and other bug fixes

SMTP:
- SMTP: fix 2953552, allow RSET in AUTHENTICATED state
- SMTP: bug id 2953554, implement NOOP

LDAP:
- LDAP: Enable tray icon on LDAP connection

Bug fixes:
- Fix regression in 3.6.3: basic authentication broken in checkConfig
- GUI: Fix client certificate setting switch

Enhancements:
- Change debian package dependence to accept openjdk-6-jre and libswt-gtk-3.5-java
- Fix from audit
- Improve log message on HTTP header error
- Implement NTLM HTTP proxy support
- Improve logging of expired sessions
- Support multiple forms in form based authentication logon page
- Catch error on SWT exit
- Enable NTLM on Proxy-Authenticate return code with only NTLM available

Documentation:
- Doc: Document davmailservice.exe usage
- Doc: Document Force ActiveSync setting in Getting Started
- Doc: Add an FAQ entry on DavMail settings location
- Doc: Update release notes and guide

IMAP:
- IMAP: new patch from Gellule to fix disappearing messages issue
- IMAP: rethrow SocketException after error in handleFetch

Caldav:
- Caldav: new fix for invalid events
- Caldav: add a hidden davmail.caldavDisableInbox to allow users to disable Caldav Inbox with Thunderbird 3 and Lightning
- Caldav: improve broken events logging
- Caldav: Follow redirects on GET with permanentUrl


** DavMail 3.6.3 released **
Another bugfix release, mostly documentation updates, some regressions
in 3.6.2 in error handling fixed, a new IMAP workaround to completely
hide the uid change issue, emacs IMAP support and new UI settings for
previously hidden parameters.

Bug fix:
- Fix logging settings handling in webapp mode

Enhancements:
- Improve error handling: detect SocketException to avoid client socket closed errors
- Implement file based (PKCS12 and JKS) client certificates in addition to smartcard support

Documentation:
- Doc: update roadmap
- Doc: remove replace token and search page
- Doc: added Gellule as Java Contributor
- Doc: add a security section in the FAQ
- Doc: update FAQ with Exchange prerequisites details
- Document client keystore file settings

IMAP:
- IMAP: brand new IMAP uid workaround and refresh folder on Expunge from Gellule
- IMAP: implement LIST "" "*%" for emacs
- IMAP: another fix for the message uid bump issue
- IMAP: fix 2934922, implement (NOT DELETED) in search filter
- IMAP: extend thunderbird changed uid workaround to all contexts

GUI:
- Add new setting davmail.defaultDomain to set default windows domain
- Prepare new advanced options

Caldav:
- Caldav: add davmail.forceActiveSyncUpdate option to the settings frame
- Caldav: add davmail.caldavAlarmSound option to the settings frame (used to force conversion of Caldav alarms to AUDIO supported by iCal)
- Caldav: fix 2884864, send notifications to all participants on CANCEL
- Caldav: Fix invalid event handling, exclude events from returned list

SMTP:
- SMTP: implement RSET (reset) command to avoid connection timeout with Evolution

** DavMail 3.6.2 released **
New bugfix release, with improved OSX tray icon, Kontact
support, a new workaround for thunderbird IMAP no message error,
public folders on a separate server support, improved ActiveSync
support and some documentation enhancements.

LDAP:
- LDAP: fix bug 2919463, escape quotes in search filter
- LDAP: fix Kontact ldap filter parsing, allow LDAP_FILTER_PRESENT in subfilter

Documentation:
- Doc: fix script replace
- Doc: new download and build pages
- Doc: update roadmap
- Doc: update doc
- Doc: add search icon
- Doc: Update roadmap
- Doc: Add roadmap to site menu

IMAP:
- IMAP: workaround for thunderbird random issue with no message found, keep previous message list to cope with recent message uid change.
- IMAP: try to support public folders hosted on a separate server (302 redirect on PROPFIND)
- IMAP: fix date parsing error, see bug 2878289
- IMAP: fix 2878289, implement extended MIME header search in http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/ namespace
- IMAP: improve error logging on 500 internal server error
- IMAP: Improve error handling, do not fail on message retrieval error, just send error message
- IMAP: implement EXPUNGE untagged response on NOOP to avoid NO message not found on Exchange message message uid change
- IMAP: implement RFC822.HEADER for Sylpheed

Caldav:
- Caldav: do not send fake inbox for public calendars to iCal
- Caldav: id 2900599, implement optional attendees in notifications
- Caldav: fix bug 2896135, iCal login fails at iCal startup
- Caldav: Send root instead of calendar href as inbox to fix iCal regression
- Caldav: Exclude events with a null instancetype and no ICS content
- Caldav: Workaround for Lightning 1.0pre public calendar, send calendar href as inbox/outbox urls
- Caldav: Convert DISPLAY to AUDIO only if user defined an alarm sound in settings (davmail.caldavAlarmSound)
- Caldav: fix NullPointerException in notifications
- Caldav: Fix bug 2907350, multiple calendar support issue with iCal
- Caldav: another timezone fix
- Caldav: Improve error handling on invalid events
- Caldav: another timezone fix
- Caldav: do not return invalid message content
- Caldav: move failover for Exchange 2007 plus encoding issue to Exchange session
- Caldav: a brand new ActiveSync fix, set contentclass to make ActiveSync happy, but also set PR_INTERNET_CONTENT to preserve custom properties. Also get etag from updated event.
- Caldav: major refactoring, move all ICS methods to Event inner class
- Caldav: fix bug 2902358, encode messageUrl in PropPatch with forceActiveSyncUpdate=true
- Caldav: improve MIME message headers in createOrUpdateEvent

Bugfixes:
- Fix last open session failover: do not append @hostname when alias contains @
- Revert to message url as default, use permanentUrl as failover
- Always use NTCredentials for proxy authorization
- Another NTLM fix: activate NTLM only on 401 unauthorized in executeGetMethod

Enhancements:
- Fix from audit (spelling errors)
- Add search page and change default package name for default svn builds
- Improve message logging
- Fixes from audit
- Additional Jsmooth settings
- Force flags parameter to 4 in Form Based Authentication
- Jsmooth patch to allow -X jvm options

OSX:
- OSX: replace inverted active icon
- OSX: new Mac OS X only icons

** DavMail 3.6.1 released **
This is a bugfix release with fixed regressions from 3.6.0
and a few enhancements from user feedback.

Documentation:
- Doc: switch download links to generic link
- Doc: Update roadmap
- Doc: add roadmap

Bugfixes:
- Fix regression in Form Based Authentication: detect Exchange 2007 UserContext cookie
- Host is mandatory for NTLMScheme, get current hostname for proxy authentication

Enhancements:
- Experimental: reactivate NTLM authentication but leave authentication preemptive mode to allow basic authentication.
- Move PKCS11 registration to a separate class to avoid ClassNotFoundException
- Experimental OTP (token) based authentication
- Vista png icons support for JSmooth
- Fix from audit
- New upload-dist ant task to upload new release files

Caldav:
- Caldav: failover for Exchange 2007 plus encoding issue, search event by displayname to get permanent Url
- Caldav: Additional timezones
- Caldav: Revert commit 765, VTODO events have a null instancetype
- Caldav: additional timezone
- Caldav: Remove MAILTO: in addition to mailto: in getFreeBusy
- Caldav: Bug 2898469 do not UrlEncode draft url twice to avoid 404 not found on send event message

** DavMail 3.6.0 released **
This release contains a lot of enhancements, both bug fixes
and new features from user feedback on 3.5.0, including improved
Evolution LDAP support, LDAP abandon support (faster searches with
Evolution and OSX), experimental windows service wrapper, improved
form based authentication support and ENVELOPE IMAP command support.  
I wish to thank Dan Foody for his valuable contributions on
OSX Snow Leopard support (attendee completion in iCal and complex
LDAP filters handling).
Also added an architecture schema on DavMail home page to quickly
describe DavMail features.

LDAP:
- LDAP: implement cn=* filter for Evolution
- LDAP: run searches in separate threads to implement ABANDON, will make searches faster with some clients (Evolution and OSX address book)
- LDAP: implement startsWith on Contact search, only objectclass=* is a full search
- LDAP: fix for iCal4 attendee completion,  send localhost if current socket is local, else send fully qualified domain name
- LDAP: major refactoring from Dan Foody to improve complex filters handling
- LDAP: improve contact search, reencode uids to hex to avoid case sensitivity issues

Documentation:
- Doc: Set Dan Foody as main java contributor
- Doc: improve DavMail logo
- Doc: add new Logo, improve internet explorer compatibility
- Doc: Add an architecture schema on site welcome page
- Doc: Improve getting started documentation, explain Exchange 2003 and 2007 paths (/exchange/ and /owa/) 
- Doc: fix site style
- Doc: fix maven site title

SMTP:
- SMTP: fix by Marc Macenko, case sensitive RCPT TO: 
- SMTP: allow lower case commands
- SMTP: experimental: remove Content-Type on create message to avoid 406 not acceptable with some Exchange servers.

Bugfixes:
- Fix 2887947: Exchange server with a username hidden field

Enhancements:
- Check for released version in a separate thread and set timeout to ten seconds
- Refactor message url encoding
- Upgrade Jmooth wrappers, add -Xrs jvm option to davmailservice wrapper to avoid service stop on user session logout (http://sourceforge.net/projects/jsmooth/forums/forum/297041/topic/2370742)
- Fix regression from revision 811
- Refactor ExchangeSession, use StringUtil to simplify code
- Remove username duplicate check, as formLogin now resets values before POST
- Start refactoring: StringUtil class
- Fix classpath in jsmooth wrappers to use new javamail
- Allow custom form with userid/pw fields in form based authentication
- Improve form based authentication, look for Exchange session cookies sessionid and cadata
- Fix test
- Upgrade JavaMail to 1.4.1
- New create folder method
- Fix FBA authentication, reset query string in getAbsoluteURI()
- New abstract JUnit test case class
- Detect redirect form instead of logon form, follow redirect to logon form
- Add an upload-site ant task
- Fixes from audit
- Fix settings default values and update doc
- Drop icon activity switches under 250ms to avoid fast flickering on OSX, add new switch icon in IMAP fetch iterations
- Improve script based form redirect to handle more cases
- Refactor ExchangeSession to allow independent session creation.
- Allow directory in logFilePath settings, add /davmail.log suffix in this case
- Allow follow redirects on /public GET requests

Caldav:
- Caldav: use permanenturl for Caldav to avoid encoding issues
- Caldav: do not close connection on 401 authorization required, may help iCal authentication
- Caldav: Additional Allday fix for Exchange 2007 and Outlook, implement a failover with a new davmail.timezoneId setting.
- Caldav: fix regression on create event, missing CRLF in mime message
- Caldav: Fix regression on public calendar folders linked to multiple calendar support for iCal
- Caldav: use chunked response to send calendar folder content as ICS to avoid timeout
- Caldav: Experimental GET ics on folder and fix regression on public folder access
- Caldav: get current VTIMEZONE body from OWA to create Allday events compatible with Outlook. Users still need to select the same Timezone in Outlook and OWA.
- Caldav: Fix Timezone value
- Caldav: Create a new setting davmail.forceActiveSyncUpdate to let users choose to force ActiveSync event. Note: custom iCal or Lightning ICS properties are lost if this option is enabled.
- Caldav: Some Exchange servers redirect to a different host for freebusy, use wide auth scope
- Caldav: Another fix from Dan Foody: improve dumpICS debug option
- Caldav: need to check session on each request, credentials may have changed or session expired
- Caldav: fix regression after ActiveSync patch, PROPPATCH on contentClass removes all custom ICS properties
- Caldav: improve getICSValue, do not return values inside VALARM section
- Caldav: do not send events with a null instancetype (may be the cause of iCal failure)
- CalDav: Send sub folders for multi-calendar support under iCal
- Caldav: fix path translation to Exchange for calendars in sub folders under /calendar
- Caldav: Added supported-calendar-component-set to calendar response
- Caldav: added a debug trace when requested calendar is not user calendar (maybe shared, but often url mistake in Caldav client)
- Caldav: fix Bug 2686125, PROPPATCH event after PUT to trigger activeSync PUSH, tested with iPhone 3 using activeSync

IMAP:
- IMAP: use permanenturl instead of href to avoid url encoding issues
- IMAP: Revert convert absolute IMAP path to relative path, breaks Caldav
- IMAP: Convert absolute IMAP path to relative path and detect ISA server cookie starting with cadata (instead of equals cadata)
- IMAP: use upper case NIL in ENVELOPE
- IMAP: improve MimeMessage handling, drop after fetch to avoid keeping full message in memory
- IMAP: fix new ENVELOPE feature, must return encoded values
- IMAP: implement store by id and ENVELOPE
- IMAP: update message flag only if changed to avoid unneeded message uid bump, may fix Evolution and Apple Mail constant reload issue
- IMAP: implement search by id
- IMAP: send default BODYSTRUCTURE on MIME encoding error
- IMAP: improve complex content-type handling in BODYSTRUCTURE
- IMAP: fix deleted flag handling, switch to official Exchange IMAP property http://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/0x8570
- IMAP: detect HttpNotFoundException on folder select
- IMAP: improve public folder error handling
- IMAP: fix space at end of folder name
- IMAP: Fix regression on LIST INBOX
- IMAP: experimental public folder access
- IMAP: switch to http://schemas.microsoft.com/exchange/contentstate to handle deleted flag (DAV:isdeleted did not work with some Exchange servers).
- IMAP: implement undelete message

** DavMail 3.5.0 released **
This release improves OSX Snow Leopard support, thank to
contributions from Dan Foody. Contact searches are also
available now in addition to global address book searches
over LDAP. IMAP with iPhone should now work correctly with
most messages, Evolution IMAP read flag is fixed.
Also added an experimental windows service support
and a lot of other bug fixes and enhancements. 

Doc:
- Doc: Fix FAQ whitespaces
- Doc: improve javadoc and code cleanup
- Doc: New OSX settings screenshot
- Doc: update release guide
- Doc: improve index and build doc
- Doc: detailed WIRE debug log file creation

Windows:
- Windows: Include DavMail service in windows package
- Windows: create windows service exe
- Windows: create windows service exe

IMAP:
- IMAP: test session expiration on each command, get a new session on expiration
- IMAP: improve error logging on network down
- IMAP: fix bug 2845530 implement FLAGS.SILENT command
- IMAP: fix absolute (public) path handling
- IMAP: fix BODYSTRUCTURE, build message on full buffer, do not rely on partial buffer (header, body, ...)
- IMAP: fix bug 2835529 FETCH with unordered range
- IMAP: send default BODYSTRUCTURE on mime parsing failure
- IMAP: Improve IMAP bodystructure error logging
- IMAP: Send bodystructure with headers for iPhone request (BODYSTRUCTURE BODY.PEEK[HEADER]) 
- IMAP: send BODY[TEXT] for BODY.PEEK[TEXT] request, may improve iPhone support
- IMAP: First fix for bug 2840255, do not follow redirects on message FETCH

Caldav:
- Caldav: fix conflict between X-MICROSOFT-CDO-BUSYSTATUS, X-MICROSOFT-CDO-ALLDAYEVENT and ORGANIZER ics patches
- Caldav: check credentials on each request
- Caldav: Disable broken sub calendar folders code
- Caldav: Do not fail on Inbox access denied, just return an empty folder
- Caldav: fix multi calendar Exchange path for sub folders
- Caldav: Experimental, fix sub calendar folders path
- Caldav: Experimental, send sub calendar folders on propfind with depth 1
- Caldav: Handle multi line description in calendar message body
- Caldav: merged contribution from Dan Foody,
- Caldav: convert sound to display alarms and back
- Caldav: remove additional organizer attendee line
- Caldav: remove RSVP=TRUE if PARTSTAT is not NEEDS-ACTION
- Caldav: add dump ICS logging feature
- Caldav: add a text/plain body to calendar messages
- Caldav: create a subject for calendar messages
- Caldav: fixed some encoding issues in Dan's code
- Caldav: Additional timezones
- Caldav: failover to DAV:comment instead of CALDAV:schedule-state on some Exchange servers

LDAP:
- LDAP: iCal fix to suit both iCal 3 and 4:  move cn to sn, remove cn
- LDAP: iCal: do not send LDAP_SIZE_LIMIT_EXCEEDED on apple-computer search by cn with sizelimit 1
- LDAP: copy uid to apple-generateduid for iCal attendee search 
- LDAP: Make sure we do not send empty description field, replace " \n" with null
- LDAP: fix thread name
- LDAP: exclude non contact entries from search, fiw map key and sn copy for iCal
- LDAP: fix contact search, do not send unrequested attributes
- LDAP: improve Contact search filter support
- LDAP: Additional Contact attributes
- LDAP: refactor contact find, generic attribute mapping
- LDAP: experimental contact search support

OSX:
- OSX: Prepare hide from Dock option
- OSX: crazy workaround from Dan Foody to fix attendee search on OSX Snow Leopard
- OSX: iCal4 (OSX Snow Leopard fixes)

Bug Fixes:
- Fix regression in Form Based Logon: fix script based logon URI creation with path and query
- Another network down fix: DavMailException is not network down
- Improve Form Based Logon: fix script based logon URI creation
- Improve Form Based Logon: use full URI instead of path in PostMethod, also force trusted=4
- Simplify HttpClient creation to avoid password decoding bug in commons httpclient ('+' in password decoded as ' ')

Enhancements:
- Improve HttpException error logging
- Fixes from checkStyle audit
- Adjust checkStyle settings
- Improve error handling on invalid URL
- Various fixes from FindBugs audit
- Fix from audit: synchronize access to HttpConnectionManager
- Refactor ExchangeSession: do not follow redirects with GET methods
- Fix from audit
- Do not pass DavMailAuthenticationException to handle network down
- Custom form (txtUserName, tstUserPass) support
- Another network down fix from Dan Foody
- Merged another patch from Dan Foody on network down detection
- New settings method: return log file directory

** DavMail 3.4.0 released **
This release includes iPhone 3 Caldav support, upgrade to SWT 3.5,
Palm Pre IMAP fixes, improved shared/public calendar support
and a lot of bug fixes.

Doc:
- Doc: Code cleanup and improve javadoc
- Doc: Update doc
- Doc: Upgrade maven site plugin and improve style
- Doc: Update maven pom inceptionYear

Bug:
- Bug: Do not try to set Nimbus Look And Feel on Linux with Gtk

Enhancements:
- Remove NTLM authentication, breaks Basic authentication (missing domain in username)
- Set NTLM as last authentication scheme
- Experimental: reenable NTLM authentication
- Upgrade SWT to 3.5
- Use getFolderPath in getSubFolders
- Make API more consistent: createMessage must get a folder path, not URL
- Enhancement: Patch 2826966 from Eivind Tagseth, Make davmail.sh work from any location

IMAP:
- IMAP: Need to reset index for Palm pre
- IMAP: case insensitive search operators
- IMAP: Fix bug 2835529, implement SEARCH ALL SINCE for Palm Pre

Caldav:
- Caldav: improve error handling, 440 means 403 forbidden on Exchange
- Caldav: Fix shared calendar support for Lightning
- Caldav: additional patch for Outlook created recurring events
- Caldav: set X-MICROSOFT-CDO-BUSYSTATUS according to TRANSP field
- Caldav: implement a timezone translation table for iPhone 3, revert organizer patch (breaks notifications with Lightning)
- Caldav: another iPhone fix, remove organizer line if user is organizer
- Caldav: generic timezone patch for iPhone 3
- Caldav: remove empty ics properties
- Caldav: Remove calendar-proxy, only used for delegate calendars
- Caldav: try to improve responses for iCal
- Caldav: fix bug 2833044 Event not found error on dismissing reminders with events created in Outlook with a plus sign in subject
- Caldav: Experimental, add calendar-proxy DAV option and version in server header
- Caldav: Add missing allow OPTIONS header
- Caldav: improve public (shared) calendar support, accept calendars at any depth
- Caldav: set caldav logging to davmail logging level
- Caldav: updated fix, remove organizer line if event has no attendees for iPhone
- Caldav: remove organizer line if current user is organizer for iPhone, will not remove line for events with attendees
- Caldav: Improve principal -> actualPrincipal detection: use session alias instead of login
- Caldav: fix bug 2819028, case insensitive email in sendPrincipal test
- Caldav: iPhone compatibility, remove <C:comp name="VTODO"/>
- Caldav: iPhone workaround: send calendar subfolder
- Caldav: revert @ encoding, breaks iCal
- Caldav: iPhone fix, encode @ in Caldav response hrefs
- Caldav: untested, extended PROPFIND / response for iPhone 3.0
- Caldav: fix infinite loop with Sunbird 1.0pre with invalid credentials

SMTP:
- SMTP: fix bug 2791607, do not patch message body (breaks electronic signature), no longer needed with latest Thunderbird

** DavMail 3.3.0 released **
This is a bug fix release after two beta releases,
including PKCS11 (smartcard) client certificate support,
gateway encryption (SSL) support, the new jackrabbit and httpclient libraries
and I18N support (french and english available).

- Caldav: updated caldav response headers according to gmail, added Expires and Cache-control HTTP headers
- POP3: implement NOOP command
- Doc: Update documentation header
- Doc: Add GPLv2 header to all source files
- Doc: Remove Apache license from checkstyle config file header
- IMAP: fix DELETED/UNDELETED SEARCH parameters
- IMAP: Fix bug 2822625: support index range in IMAP SEARCH
- Enhancements: Merged network down (with firewall) code from Dan Foody
- Caldav: Additional properties and ignore cases for Sunbird
- Caldav: Fix empty organizer field in ICS (active sync support) and another getParticipants bug
- GUI: Fix OSX menu default ActionListener
- GUI: Try to set Nimbus Look And Feel on Linux with Gtk

** DavMail 3.3.0b2 released with smartcard (PKCS11) support **
This is a bug fix release, with nonetheless one main new feature:
PKCS11 (smartcard) client certificate support !
Tested with ActivIdentity ActivClient and Mozilla soft token, should
work with any PKCS11 module.

Security:
- (RFE 2800206) PKCS11 (smartcard) client certificate support

Server (daemon) mode:
- Fix server mode: now all listener threads are daemon, avoid main thread exit and add a shutdown hook
- Name shutdown thread

Caldav:
- Move wire debug log with headers
- Fix NoSuchMethodError with Java 5
- revert supported-calendar-component-set on root and improve logging
- fix regression on iCal calendar color change
- only include attendees with RSVP=TRUE or PARTSTAT=NEEDS-ACTION for notifications (avoid iCal additional notifications)
- Improve error handling on FreeBusy failure
- add supported-calendar-component-set property requested by iPhone 3.0
 Sunbird compatibility, exclude events with empty names
- Fix for iCal: send etag on GET and HEAD requests
- Send empty response instead of error on freebusy with unknown attendee

IMAP:
- revert refreshFolder calls that break Outlook

OSX:
- Remove default trayIcon listener on OSX
- Fixed logFilePath logic on OSX

Enhancements:
- Update ExchangeSession test
- Exclude optional log4j maven dependencies
- Added a logFilePath setting to set log4j file appender path, this appender is now added dynamically to avoid davmail.log file create failure
- Upgrade Log4J to 1.2.15
- Make sure we do exit: catch exceptions before System.exit

Doc: 
- Document build process in FAQ

Known issues :
- Does not - yet - work with iPhone 3.0 Caldav
- Still issues with Exchange activeSync mode

** Davmail 3.3.0b1 released **
This release is mainly a deep refactoring: replaced deprecated 
jakarta slide library with jackrabbit and upgrade httpclient.
Also added client to gateway encryption (SSL) support, started I18N
(french and english available) and many bug fixes and enhancements.

I18N:
- I18N: FrameGatewayTray
- I18N: Format port numbers and add missing message
- I18N: improve startup log message
- I18N: remove Locale.ROOT not available under Java 1.5
- I18N: externalize and translate exception messages
- I18N: Do not apply i18n on log file
- I18N: french localization
- I18N: externalize all DavGatewayTray log statements for i18n
- I18N: ldap package
- I18N: davmail package
- I18N: start internationalization conversion

POP:
- POP: Defer message list after login phase and load only uid and size attributes
- POP: make sure the url is encoded correctly on delete

IMAP:
- IMAP: Detect fetch of a missing (probably deleted) message to avoid infinite loop with Thunderbird
- IMAP: reset icon after each command

SMTP:
- SMTP: fixed two bugs, header ignored because of Exchange 2007 from patch and bccbuffer 
 double xml encoding (=> Delivery status notification)

LDAP:
- LDAP: improve ldap search logging

Doc:
- Add Mitchell V. Oliver as Java Contributor
- SSL certificate settings documentation in getting started
- Update OSX doc: credentials are mandatory in Directory Utility settings
- Add Eivind Tagseth as Java Contributor

Enhancements:
- Check java version in ant build.xml
- Fix ExchangeSession test
- Refactor DavProperty handling with new jackrabbit library
- Close idle connections to exchange after one minute
- Avoid 401 roundtrips
- Remove deprecated HttpException api
- Replace deprecated setRequestBody with setRequestEntity
- Refactor DavProperty handling with new jackrabbit library
- Update packaging and Maven POM after library update
- Major refactoring: replace deprecated jakarta slide with jackrabbit and upgrade httpclient
- Upgrade svnkit library
- Sort properties and display version in startup message
- Use interactive console certificate accept in headless and/or server mode
- Append svn build number to release name
- Additional login failover : get email from options page
- Replace greyscale inactive icon with a color icon
- Avoid nullpointerexception in Settings.setProperty
- Reinsert System.exit after clean shutdown to make sure we do exit
- Make all threads daemon and remove System.exit calls
- Patch 2790299 by Mitchell V. Oliver: Add support for SSL to client connections
- Remember previous checkConfig status to detect network down
- Fixes from audit
- Refactor email retrieval : do not throw IOException in failovers
- Implement BundleMessage.toString() for direct usage in Log4J logger
- Revert to simple class names in thread names
- Catch unknown host on session login
- Workaround for post logon script redirect
- Workaround for Exchange server misconfiguration: move galfind requests to mailPath or /exchange instead of /public
- Enhancements from audit
- Fix exchangeSession test class
- Improve BindException error message
- Cleanup from audit
- Improve exception handling
- Implement a last resort failover to build email from alias and domain name
- Limit redirects to 10 instead of 100
- Replace hardcoded strings
- Refactor SimpleDateFormat usage
- Reorganize packages

OSX:
- OSX: replace JavaApplicationStub link with actual file
- OSX: Move davmail.log to Library/Logs/DavMail on OSX
- OSX: Improve Mac OSX Java6 support
- OSX: fix regression on OSX Quit handler

Bugs fixed:
- Fix bug 2797272: Add disable update check
- Do not localize port numbers
- Replaced localhost check with the isLoopbackAddress() method, should be IPV6 compatible
- Fix regression : /exchange/ does not work for galfind under Exchange 2007
- Fixed 2717547: Unsupported filter attribute: apple-group-memberguid
- URI encode alias in getEmail()
- Fix SSLProtocolSocketFactory with HttpClient 3.1
- Reenable limited timeout on getReleasedVersion
- Always exclude NTLM authentication, not only for proxy authorization
- Fix 2717446 from Eivind Tagseth

Caldav:
- Caldav: fix unknown recipient message
- Caldav: do not send freebusy info if attendee is unknown
- Caldav: Improve calendar-color patch answer
- Caldav: implement HEAD request
- Improve network down detection for Caldav
- Caldav: No need to check connectivity on HTTPS
- Caldav: Fix Bug 2783595, allow empty lines in ICS content
- Caldav: Exclude RSVP=FALSE from notifications recipients list for Outlook 2003 compatibility
- Caldav: exclude invalid attendees address from recipient list
- Caldav: avoid duplicate / in event path
- Caldav: implement public shared calendar
- Caldav: In progress multi calendar support
- Caldav: fix regression in FreeBusy date handling
- Caldav: switch icon during event report
- Caldav: refactor CaldavConnection, prepare /public context
- Caldav: another special characters handling improvement
- Caldav: iCal decodes hrefs, not lightning => detect client in CaldavRequest
- Caldav: replace etag by resourcetag in getCalendarEtag
- Caldav: Send events back to the client after each get on REPORT request (avoid iCal timeout)
- Caldav: no inbox/outbox for delegated calendars
