2016-12-19 Version 2016 R3 #
(build number 6198)
Elliptic curve cryptography in TLS/SSL
All Rebex components utilizing our TLS/SSL library now support the following TLS ciphers based on Elliptic Curve Diffie-Hellman (ECDH) algorithm:
- NIST P-256
- NIST P-384
- NIST P-521
- Brainpool P256 R1
- Brainpool P384 R1
- Brainpool P512 R1
- Curve 25519
Please note that external plugins might be needed for some of those algorithms or curves on some platforms.
Enhanced SHA-2 certificate validation on all .NET Compact Framework platforms
We still support .NET Compact Framework 2.0, 3.5 and 3.9 and Windows CE 5.0 and higher.
Unfortunately, legacy versions of Windows CE won't get native support for X509 certificates signed using SHA-2 algorithms,
which essentially makes the native certifiacte validator useless - it only supports SHA-1, which is getting deprecated.
As a workaround to this platform limitation, we introduce a new built-in certificate validator.
It handles SHA-2 and is used by default on .NET Compact Framework platforms that lack native SHA-2 support.
Proper certificate validation on Universal Windows Platform
Support for Universal Windows Platform is still experimental, but it just got much better.
We now support the platform's native certificate validation provided by
There is now no need to implement custom validators in your Windows 10 Store applications.
Optimized memory usage of MailMessage/MimeMessage objects
We have refactored the internals of our mail objects to make them consume less memory.
Working with large messages is much more efficient now.
OAUTH authentication in EWS
Ews object now supports OAUTH 2.0 authentication with Microsoft's Office365 and Outlook.com servers.
Mailbox synchronization in EWS
Keeping a local cache of folders and items in sync with the server is now very simple
Disabled weak legacy ciphers in TLS/SSL
All legacy 'EXPORT1024' ciphers are now prohibited by default in addition to already-prohibited 'EXPORT' ciphers.
SslAllowVulnerableSuites option can be used to enable them, but this is strongly discouraged.
Complete list of changes of version 2016 R3
- Mail: Optimized memory usage of MailMessage and MimeMessage objects.
- Mail: Added MailMessage.IsDraft property.
- Mail: Added Settings.IgnoreMsgTransportHeaders option to MailMessage class.
- Mail: Enhanced handling of broken TNEF messages (parses as much as possible).
- Mail: Enhanced embedded resource handling in RTF-to-HTML converter.
- MIME: Added support for a non-standard time zone format that includes a colon.
- POP3: Added workaround for Office365's POP3 server that occasionally closes accepted connections.
- IMAP: CopyMessage method no longer requires the server to return a COPYUID response if it supports the UIDPLUS extension.
- EWS: Support for OAuth added to EWS client.
- EWS: Added GetUpdatedItems and GetUpdatedFolders methods for synchronization of items and folders.
- EWS: Added Ews.StoreItem method and EwsItemInfo.FromXml method.
- EWS: Enhanced error reporting in Ews.UpdateItem method.
- EWS: Added Ews.Settings.Impersonation to enable impersonation of an user using his/her SMTP address.
- EWS: Fixed duplicate 'Authorization' headers during 'Basic' authentication.
- EWS: Fixed handling of missing WWW-Authenticate header during authentication.
- EWS: Fixed Ews.DeleteItem method to work properly with Exchange task items.
- EWS: Fixed handling of Exchange cookie.
- EWS: Enlarged outgoing data block size, enhancing compatibility with Exchange 2010.
- EWS: Added EwsMessageInfo.TextBody property.
- Networking: Enhanced and optimized HTTP/HTTPS client core.
- Networking: Connect/Listen methods on ProxySocket/TlsSocket objects now throw an exception when called twice on the same socket.
- Networking: Added SocketInformation constructor.
- SSH: Added support for "ecdh-sha2-nistp256", "ecdh-sha2-nistp384", "ecdh-sha2-nistp521" and "email@example.com" key exchange algorithms (plugins might be needed on some platforms).
- SSH: Added support for new OpenSSH key format (Base64-encoded keys with "BEGIN OPENSSH PRIVATE KEY" header).
- SSH: Added SetKeyExchangeAlgorithms, SetHostKeyAlgorithms, SetMacAlgorithms methods to SshParameters object to make it possible to fine-tune the list of enabled SSH ciphers.
- SSH: Legacy Diffie-Hellman group exchange is only used with legacy SSH servers.
- SSH: Added SshSession.ServerInfo property to make it possible to determine ciphers supported by the SSH server.
- SSH: Added SshPublicKey.KeySize property.
- SSH: Added SshParameters.MinimumRsaKeySize property specifying to connect only to SSH servers with RSA server key of given size or higher.
- SSH: Added support for "ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521" and "ssh-ed25519" host key algorithms (plugins might be needed on some platforms).
- SSH: Disabled weak SSH ciphers by default (they can still be enabled explicitly).
- SSH: Check availability of associated private key when adding a certificate-based server host key.
- SSL: Added support for Elliptic-Curve based TLS ciphers (TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA) with NIST P-256/P-384/P-521, Curve 25519 and Brainpool P256R1/P384R1/P512R1 curves. Plugins are needed for some of those.
- SSL: Server name is now passed to TLS server during negotiation (use TlsParameters.CommonName to override it).
- SSL: Fixed TlsCipherSuite.All to include all recently added cipher suites.
- SSL: All legacy 'EXPORT1024' ciphers are now prohibited by default in addition to already-prohibited 'EXPORT' ciphers (unless AllowVulnerableSuites option is enabled).
- SSL: Fixed issues with some legacy TLS/SSL ciphers (all of them were already disabled by default).
- SSL: Enhanced error reporting in server-side TLS/SSL library.
- Cryptography: Improved ASN.1 time node parser.
- Cryptography: Added support for certificate validation on Universal Windows Platform.
- Cryptography: Added custom X509 certificate validator for .NET Compact Framework with full SHA-2 support on all platforms.
- Cryptography: Fixed parsing of 'Intended Usage' extension when 'Decipher Only' was specified.
- Cryptography: Added static Create method to SHA256Managed/SHA384Managed/SHA512Managed classes on .NET Compact Framework.
- Cryptography: ValidationResult.ErrorCode deprecated and replaced with NativeErrorCode.
- Cryptography: Optimized memory usage in CMS/PKCS #7 (SingedData/EnvelopedData classes).
- Cryptography: Added missing argument checks to CertificateIssuer methods.
- Cryptography: Added support for Base64-encoded files with CRLF end-of-line sequences to CertificateChain.LoadP7b method.
- Cryptography: Fixed HMAC calculation based on SHA-384 and SHA-521 on NET Compact Framework and Mono platforms.
- Cryptography: Added Rebex.Security.Certificates.CertificateEngine class to make it possible to implement custom X509 chain building and validation engines.
- Core: Added ConsoleLogWriter for Xamarin platforms.
- Core: Added Rebex.TeeLogWriter class that makes it possible to log to multiple log writers.
- Core: Added LocalItem.GetChecksum methods and related types.
2016-08-26 Version 2016 R2.2 #
(build number 6083)
This update brings several improvements, workarounds and bugfixes.
Complete list of changes of version 2016 R2.2
- Mail: CRAM-MD5 and DIGEST-MD5 are no longer preferred authentication methods on secure connections.
- Mail: Added workaround for some broken multipart/related entities.
- EWS: Optimized response logging in Ews class.
- EWS: Added EwsItemMetadata.Subject property to make it possible to change subject of an item using Ews.UpdateItem method.
- EWS: Added EwsMessageMetadata class to improve the usability of Ews.UpdateItem method. Deprecated EwsItemMetadata.IsRead property and moved to EwsMessageMetadata.
- EWS: Relaxed SOAP XML check to allow ASCII control characters.
- SSH: Enhanced handling of errors in FingerprintCheck event handlers.
- SSL: Fixed a rare issue in abbreviated TLS/SSL negotiation handling.
- Cryptography: Added CheckCertificate/GetIssuingDistributionPoint methods to CertificateRevocationList class and ValidateRevocationList method to Certificate class.
- Cryptography: Added support for certificates with private keys stored in CNG Key Storage Providers.
- Cryptography: Enhanced SHA-2 support check on .NET Compact Framework.
- Cryptography: Fixed SHA-2 support in AsymmetricKeyAlgorithm.SignHash on Windows Server 2008 (and possibly other old platforms).
- Core: Added workaround for broken FileStream.SetLength on some .NET Compact Framework platforms.
2016-07-28 Version 2016 R2.1 #
(build number 6054)
Workarounds for Microsoft Schannel bugs in TLS/SSL
Added workaround for bugs in Microsoft's TLS/SSL library which uses and expects
wrong padding in DHE_RSA_* ciphers.
Fixed EWS thread safety
Ews class, our Exchange Web Services client, was not entirely thread-safe. This has been fixed.
Complete list of changes of version 2016 R2.1
- IMAP: Added ImapMessageSet.AddRangeFrom/AddRangeTo methods.
- EWS: Added a new Ews.DeleteItem metod overload that accepts EwsDeleteMode.
- EWS: Fixed Ews object thread-safety.
- Networking: Fixed ProxySocket.ToEndPoint to throw a more meaningful exception for entries with no IP addresses.
- SSL: Fixed unreadable TLS debug log messages on Xamarin platforms.
- SSL: Added workarounds for bugs in Microsoft Schannel implementation of DHE_RSA_* ciphers related to incorrect padding processing.
- Cryptography: Fixed AsymmetricKeyAlgorithm.SignHash (in 2016 R2, it falls back to RSAManaged without trying to use RSACryptoServiceProvider first).
- Cryptography: Fixed CertificateIssuer.IssueRevocationList method that ignored signatureHashAlgorithm argument and always used SHA-1.
- Core: FileLogWriter on Windows Store 8.x / Universal Windows Platform is now thread-safe.
- Core: Fixed LocalItem(string) constructor on Windows Store 8.x / Universal Windows Platform.
- Core: Added workaround for broken handling of surrogate pairs when converting to "iso-8859-1" using System.Text.Encoding on Mono 4.x.
2016-06-30 Version 2016 R2 #
(build number 6026)
Support for Xamarin June 2016 Update
June 2016 update of Xamarin.iOS/Xamarin.Android/Xamarin.Mac introduced a breaking change in Mono.Security API
that broke compatibility with Rebex components. This issue has been solved in this release.
SHA-2 for all supported .NET Compact Framework platforms
SHA-1 is currently being deprecated (applies to X509 certificates, TLS/SSL and SSH),
which poses a problem for legacy .NET Compact Framework platforms based on editions
of Windows CE with no native SHA-2 support. To make solutions for these platforms compatible
with current TLS/SSL and SSH serves, we added a custom implementation of SHA-2 for these
Complete list of changes of version 2016 R2
- Mail: Added Pop3MessageInfo.ReceivedDate property.
- Mail: Added workaround for problematic UTF-8-encoded HTML bodies in TNEF (winmail.dat).
- Mail: Added support for address format used by fax gateways ("<[FAX:number]>")
- Mail: Fixed bug causing exception to be thrown when loading signed mail with RTF body.
- Mail: Added workaround for invalid end-of-line sequences sent by Lotus Domino (used to cause "Invalid IMAP response" exception).
- MIME: Fixed parsing of messages with invalid Content-transfer-encoding and missing Content-type header.
- MSG: Added MailMessage.Settings.PreferExplicitBody option.
- IMAP: Fixed detection of read-only IMAP folders.
- IMAP: Fixed "plain" authentication to use UTF-8.
- IMAP: Added Imap.Settings.UseLargeBuffers to force usage of larger TCP send and receive buffers.
- EWS: Better error message when trying to connect to non-Exchange servers.
- EWS: 'Negotiate' authentication is now preferred to 'NTLM' in EWS.
- EWS: Enhancements in HTTP client core (does not affect EWS behavior).
- EWS: Added Ews.ProvisionHeaders method to 'provision' X-headers on Exchange/Office365 servers.
- EWS: Added Ews.GetFolderList() method.
- Networking: Increased default receive buffer size on Windows 8 and higher. Added related Proxy properties to make this configurable.
- Proxy: ProxySocket object's Connect method now uses the timeout value specified by the Timeout property.
- SSH: Added support for additional server authentication algorithms ('x509v3-sign-dss', 'firstname.lastname@example.org' and 'email@example.com').
- SSH: Disabled hmac-sha96 SSH cipher in FIPS mode (it's not compliant).
- SSH: Fixed error handling in queued background calls (mostly applies to session renegotiation).
- SSH: Fixed renegotiation handling to allow renegotiation while authenticating.
- SSH: Fixed DSA client certificate authentication.
- SSH: Enhanced interactive authentication support to handle uppercase password prompts.
- SSL: Enhanced SHA-2 support for .NET Compact Framework. SHA-256, SHA-384 and SHA-512 are now supported even on platforms with no native SHA-2 support.
- SSL: Added Settings.SslSession property to allow resuming specific TLS/SSL sessions.
- SSL: Fixed record layer 'protocol version' handling.
- SSL: Enhanced Diffie-Hellman key exchange logging.
- Cryptography: Fixed detection of native SHA-2 support in .NET Compact Framework version.
- Cryptography: Added support for more variants of OpenSSL/OpenSSH (SSLeay) key files.
- Cryptography: Fixed Certificate.Associate to work with DSA keys.
- Cryptography: Added CrlNumber property to CertificateRevocationList object.
- Cryptography: Added support for SHA-2 certificates to Certificate.VerifyHash in .NET 2.0 on Windows with FIPS-compliant mode enabled.
- Cryptography: Certificate.LoadPfx and CertificateChain.LoadPfx methods now specify Exportable options by default (in addition to UserKeySet).
- Cryptography: Added workaround for RSA implementations that reject rare signatures shorter than the key size.
- Core: Enhanced SSPI error messages.
- Core: Fixed LogWriterBase.Level default value.
- Core: Fixed compatibility issue in Xamarin edition (caused by a breaking change in June 2016 update of Xamarin).
2016-02-10 Version 2016 R1.1 #
(build number 5885)
Experimental assemblies for Xamarin.Mac
Added experimental binaries of most Rebex components (FTP/SSL, SFTP, File Server, Secure Mail, ZIP, Time, Security) for Xamarin.Mac platforms.
They are suitable for targeting Xamarin.Mac Mobile Framework and Xamarin.Mac .NET 4.5 Framework projects.
Mitigation of SLOTH attacks
Usage of legacy MD5 algorithm in TLS 1.2 was disabled to prevent SLOTH attacks.
Experimental binaries of most Rebex components (FTP/SSL, SFTP, File Server, Secure Mail, ZIP, Time, Security) for
the Xamarin.Mac platform are now available. They are suitable for targeting both Xamarin.Mac Mobile and Xamarin.Mac .NET 4.5 Framework projects.
This release includes several hotfixes.
Complete list of changes of version 2016 R1.1
- MIME: Added workaround for broken MIME headers that use 'URL and file-system-safe' Base-64-encoding.
- MSG: Added workaround for MSG attachments erroneously claiming to be "message/rfc822".
- MSG: Added workaround for broken MSG files which don't specify internal byte count values or don't contain data stream for variable length properties.
- EWS: Enhanced EwsSearchParameter.Body to include a workaround for problematic behavior of Exchange 2010 body text searching.
- SSH: Fixed seldom-used SshSession.Connect(string, int) method that was freezing since 2016 R1.
- SSH: Added workaround for older version of Bitvise server that don't properly handle SSH channel closing.
- SSH: Fixed handling of multi-line SSH banner messages.
- SSH: Fixed a bug in SSH channel window size adjustment.
- SSH: Fixed potential NullReferenceException error in SshSession.Dispose method.
- SSL: Disabled any usage of MD5 in TLS 1.2 to prevent SLOTH attacks.
2016-01-11 Version 2016 R1 #
(build number 5855)
Exchange Web Services support
Rebex Secure Mail now supports Exchange Web Services (EWS) and provide a dedicated
Ews object, making it possible
to communicate with Microsoft Exchange servers using a native protocol.
Check out how to send and
receive mail messages using EWS, and more.
TLS 1.2 enhancements
TLS 1.2 is now enabled by default in all our TLS/SSL enabled components. We fixed several interoperability issues as well.
Mitigation of Logjam attacks
Check for minimum allowed Diffie-Hellman key size (1024 bits) has been added to SSH and TLS/SSL to mitigate Logjam attacks.
The minimum value can be changes using
Changed handling of messages with RTF bodies
RTF bodies are now discarded by default after a successful conversion to HTML. To revert back to the old behavior,
mail.Settings.RtfMode = RtfProcessingMode.Legacy (where
mail is an instance of
Complete list of changes of version 2016 R1
- All: Added workaround for Xamarin.Android whose Dns.GetHostEntry resolves 'localhost' to device's external IP address.
- All: Rebex assemblies are now signed with SHA-256 signatures in addition to legacy SHA-1 signatures.
- Mail: Added simple-to-use MailMessage.Settings object that supersedes MailMessage.Options.
- Mail: Fixed loading of MSG files with invalid characters in HTML body.
- Mail: Changed default RTF content handling. Added MailMessage.Settings.RtfMode.
- Mail: Added workaround for multipart/related entities that do not specify the view part.
- Mail: Fixed handling of special characters in attachment file names.
- Mail: Fixed wrong behavior when using MimeOptions.SkipTnefMessageProcessing (no attachments were processed).
- MSG: Enhanced internal MSG parsing code.
- SMTP: Fixed DNS packet writer in Smtp.ResolveDomainMX method.
- IMAP: Workaround for Gmail IMAP server that incorrectly uses '[' and ']' characters in message keywords is now used with other servers as well.
- IMAP: Added workaround for outlook.com that does not properly handle OAUTH tokens sent as IMAP literals.
- IMAP: Added workaround for Office365's IMAP server that occasionally closes accepted connections.
- EWS: Added support for Exchange Web Services (EWS).
- Proxy: Fixed a bug in SOCKS4/SOCKS5 response reading code that triggered an infinite loop with buggy proxy servers.
- Proxy: Enhanced DNS resolution error messages.
- SSH: Enhanced interactive authentication support to make it possible to use AuthenticationRequest event to ask for username and password.
- SSH: Enhanced rejected authentication logging and error reporting.
- SSH: Added SshParameters.MinimumDiffieHellmanKeySize value (set to 1024 by default to mitigate Logjam attacks).
- SSH: No exception is thrown when the server aborts connection instead of closing it (unless a packet is being received).
- SSH: Enhanced 'no common algorithms' error message.
- SSH: Refactored SSH core to handle multi-thread scenarios more efficiently.
- SSH: Added certificate-based constructor to SshPublicKey class.
- SSH: Added support for certificate-based server authentication (using 'x509v3-sign-rsa algorithm').
- SSH: Fixed misleading error message when user interactive authentication attempt is rejected.
- SSH: Added support for one additional 'keyboard-interactive' authentication prompt ('Password for [user@server]:').
- SSH: Added Settings.PostponeChannelClose option to enable workaround for servers that send channel data or exit code after the channel has been closed.
- SSH: Added EnableSignaturePadding option that forces signature padding (workaround for SSH servers that got signature padding wrong).
- SSH: Added logging of debug messages received from SSH server.
- SSL: TLS 1.2 made compatible with Microsoft's implementation.
- SSL: Fixed client certificate authentication in TLS 1.2.
- SSL: Added Settings.SslMinimumDiffieHellmanKeySize value (set to 1024 by default to mitigate Logjam attacks).
- SSL: Added reliable detection of SHA-2 certificate support.
- Cryptography: Enhanced cryptographic provider initialization error message.
- Cryptography: Added workaround for PuTTY keys with bad data at the end.
- Core: Fixed multi-file operations to never modify input FileSet's BasePath.
- Core: ThreadPool is now used to handle background operations instead of a custom implementation.
- Core: Enhanced multithread operation support in log writers.
2015-08-24 Version 2015 R4.1 #
(build number 5715)
Fixed Xamarin mobile platform detection
Fixed platform detection code on Xamarin.iOS and Xamarin.Android.
Complete list of changes of version 2015 R4.1
- All: Fixed platform detection on Xamarin.Android and Xamarin.iOS.
- All: Version and platform added to assembly description.
2015-08-09 Version 2015 R4 #
(build number 5700)
Support for Windows 10, .NET Framework 4.6 and Visual Studio 2015
All Rebex components now ship with full support for Windows 10, .NET Framework 4.6
and Microsoft Visual Studio 2015.
Older Visual Studio versions (2005 and higher) and .NET Framework versions (2.0 and higher)
are still supported as well.
Faster TLS/SSL and SSH negotiation on Xamarin.Android
Our SSH and TLS/SSL libraries now use Java-based Diffie-Hellman on Xamarin.Android, which substantially speeds up SSH and TLS/SSL negotiation
when Diffie-Hellman algorithm is used.
Complete list of changes of version 2015 R4
- All: Enhanced platform detection code.
- Mail: Some legacy methods and properties now emit a warning when compiling.
- Mail: TLS 1.2 is now enabled by default for IMAP, POP3 and SMTP.
- Mail: Added Imap/Smtp/Pop3ConnectionState.Connected properties to replace a misnamed .Connection properties.
- Mail: MimeEntity.SetContent method no longer requires a charset to be specified.
- Mail: Transfer encoding checker fixed to properly distinguish 7-bit control characters from 8-bit characters.
- Mail: Added workaround for bad characters in Content-Location headers in Outlook .MSG messages.
- Mail: Optional Size, ReadDate, CreationDate and ModificationDate properties added to ContentDisposition class.
- Mail: Fixed persisting of changes of ContentDisposition object.
- MSG: Slightly refactored MSG parser internals.
- MSG: Improved MailMessage to detect UTF-16 encoding for text body in Outlook MSG messages.
- SMTP: Smtp constructor no longer requires DNS permission.
- SSH: Added support for message authentication algorithms based on SHA-2 on .NET Compact Framework (when supported natively).
- SSH: Fixed NullReferenceException thrown by some SshSession properties (such as IsConnected) when not connected.
- SSH: SHA-2 is now the preferred message authentication algorithm.
- SSH: Added support for larger SSH packets.
- SSL: Unified status handling in ValidatingCertificate events and ICertificateVerifier interface.
- SSL: Enhanced TLS/SSL version mismatch handling.
- Cryptography: Fixed final empty block handling in Twofish/Blowfish/ArcTwo TransformFinalBlock with PKCS #7 padding.
- Cryptography: SSH and TLS/SSL now use Java-based Diffie-Hellman objects on Xamarin.Android platform to speed up negotiation.
- Core: Fixed end-of-line sequences in LogWriterBase, optimized FileLogWriter.
- Core: Added workaround for broken ASN.1 time values with the second part of "60".
2015-04-15 Version 2015 R3.1 #
(build number 5584)
This release disables "arcfour" cipher in SSH client core. Unless you are running FTP, IMAP, POP3 or SMTP
over an SSH channel, there is no need to upgrade.
Complete list of changes of version 2015 R3.1
- SSH: Disabled legacy "arcfour" SSH cipher by default.
- SSH: Fixed a bug that caused an algorithm list set by Settings.SshParameters.SetEncryptionAlgorithms to be ignored in FIPS-compliant mode.
2015-04-08 Version 2015 R3 #
(build number 5577)
Disabled RC4 in TLS/SSL
The security of RC4 symmetric encryption algorithm has been questionable for many years.
Recently, researchers have been able to exploit RC4's invariance weakness vulnerability
to retrieve about 64 bytes of encrypted information of a very small fraction of TLS/SSL connections that happen to use weak keys.
Since RC4 is no longer believed to be secure, it has been disabled by default.
Complete list of changes of version 2015 R3
- All: Fixed Version property of Ftp, Imap, Pop3, Scp, Sftp, Smtp and Ssh classes to return a proper version number. Changed Ftp.Version to a static propery to match the other objects.
- IMAP: Fixed a bug in Imap object that caused SocketException to be thrown instead of ImapException in some cases.
- SSH: Enhanced some authentication error messages.
- SSL: Disabled ciphers based on RC4 to prevend Bar Mitzvah attack on TLS/SSL.
- Cryptography: Enhanced weak signature algorithm detection during certificate validation on Xamarin.iOS.
- Core: Connect methods no longer require FileIOPermission (used to determine the assembly version for a log).
2015-03-17 Version 2015 R2 #
(build number 5555)
Fix for FREAK vulnerability
This release fixes vulnerability to FREAK exploit.
The vulnerable 512-bit legacy 'exportable' TLS/SSL ciphers have been disabled.
Support for TLS 1.2
Support for TLS 1.2 has been added, along with support for AES/SHA-256 cipher suites.
Complete list of changes of version 2015 R2
- Mail: Fixed a bug in Smtp/Imap Login methods that caused NTLM authentication not to be used in 'Auto' mode.
- MSG: Workaround for loading invalid Outlook MSG messages with redundant GUIDs and property tags.
- IMAP: Added Imap.Settings.DisableStatusOnSelectFolder option to make it possible to disable execution of 'STATUS' command before selecting a folder to determine a number of not-seen messages.
- SSL: Added support for TLS 1.2.
- SSL: Added support for AES ciphers with SHA-256 checksums.
- SSL: Disabled legacy 'exportable' ciphers (by default) to prevent FREAK security exploit.
- Cryptography: Added support for SSLeay private keys with AES-256-CBC encryption.
- Cryptography: Fixed broken HashSize property in SHA-2 CSP on .NET Compact Framework.
2015-02-02 Version 2015 R1 #
(build number 5512)
Support for Xamarin Unified API
Added support for the new Unified API.
This includes unified 32-bit and 64-bit platform support and makes it simple to share code between iOS and Mac.
Complete list of changes of version 2015 R1
- All: Added support for Xamarin.iOS unified API.
- Mail: Fixed possible NullReferenceException in RTF to HTML converter.
- MIME: Added missing null check in MimeEntity.IsMultipartSigned property.
- SMTP: Fixed SMTP state change logging in Xamarin.iOS/Android editions.
2014-12-18 Version 2014 R3 #
(build number 5466)
Legacy SSL 3.0 disabled by default in TLS/SSL-enabled components.
TLS 1.1 is now used by default in TLS/SSL-enabled components. Legacy SSL 3.0 support is disabled by default
because it is no longer considered secure. Its use is strongly discouraged after disclosure of
This update brings several improvements, workarounds and bugfixes.
Complete list of changes of version 2014 R3
- All: Added more overloads to asynchronous Connect and Login methods.
- All: Removed legacy Connect methods and enumerations from Xamarin.iOS and Xamarin.Android version (should never have been there).
- Mail: Fixed loading of RTF font table which sometimes caused an improper font to be used in the resulting HTML.
- Mail: Added ExplicitSecurity to ImapExtensions and Pop3Extensions enums.
- Mail: SHA-2 signature support is now available in .NET Compact Framework edition as well.
- Mail: RTF-to-HTML converter enhanced to support highlighted and strikethrough text, superscripts and subscripts, embossed and engraved letters.
- Mail: Improved hyperlinks support in RTF-to-HTML converter.
- Mail: SetContent(fileName, name, ...) methods and equivalent constructors of the Attachment class, now allows null in 'name' parameter.
- MIME: Enhanced mail address parser to better handle broken headers.
- MIME: Enhanced MailMessage.CanDecrypt.
- MSG: Fixed handling of newline sequences in MSG message subject.
- MSG: Fixed bug causing an ArgumentOutOfRange exception to be thrown when loading some .msg messages.
- SMTP: Added automatic loading of SmtpConfiguration.SslMode property from app.config when possible.
- POP3: Fixed a bug in Pop3.ReadResponse method that caused an exception to be thrown when multi-line command returned -ERR response.
- IMAP: Improved handling of OAUTH authentication errors in IMAP and POP3.
- IMAP: Fixed ID/validity check in StoreMessage method
- IMAP: Added workaround for Tobit David server that sends untagged EXPUNGE responses when it should not.
- SSH: Added workaround for wrong SSH_MSG_USERAUTH_PK_OK packet in Cisco SSH.
- SSL: TLS 1.1 is now used by default in TLS/SSL-enabled components. Legacy SSL 3.0 support is disabled by default.
- SSL: Added experimental support for AES and Twofish based anonymous ciphers.
- Cryptography: Fixed SymmetricKeyAlgorithm.Padding for non-CBC modes.
- Cryptography: Added support for base-64 encoded P7B certificate chains.
- Cryptography: Changed padding of parameters exported by DSAManaged.ExportParameters to match DSACryptoServiceProvider.
- Cryptography: Added AsymmetricKeyAlgorithm.PublicOnly property.
- Cryptography: Added workaround for non-working HMACSHA256/384/512 on some FIPS-only systems.
- Cryptography: Added CertificateExtension.EnhancedKeyUsage method Useful when constructing certificate requests using CertificateRequest object.
- Cryptography: Fixed DiffieHellmanManaged.KeySize that sometimes reported shorter bit lengths.
- Cryptography: Several new AsymmetricKeyAlgorithm-based methods added to Certificate and CertificationRequest.
- Core: Added LocalItem.Attributes property.
- Core: PKCS #12 key loading routines changed to not persist keys in Windows key storage by default.
- Core: Added ConsoleLogWriter, a console-based log writer class.
2014-07-03 Version 2014 R2 #
(build number 5298)
This update brings several improvements, workarounds and bugfixes.
Complete list of changes of version 2014 R2
- All: Eliminated "Unknown heap type" warnings in Mono.
- Mail: Added new Smtp.Send method overload - Send(Stream input, string sender, string recipients).
- Mail: Added missing stream closing in Smtp.Send(string filename) method.
- Mail: Enhanced handling of DSN headers in MailMessage object.
- Mail: Fixed Attachment object's Save and GetContentStream methods that had problems with some encrypted attachments.
- MIME: Fixed a bug that could cause a NullReferenceException when adding attachments in some cases.
- MIME: Fixed erroneous quote escaping when encoding unstructured headers (such as Subject).
- MIME: Added a workaround for parsing addresses with missing domain name.
- MIME: Fixed loading of emails with more attachments of the same name containing braces.
- MSG: Fixed a bug which caused RTF attachment to be discarded when MSG email was resaved to MSG format.
- SMTP: Workaround for misbehaved Yahoo SMTP server added to DirectSend method.
- SMTP: Fixed Bcc header removal with Settings.SendWithNoBuffer option.
- POP3: Added Pop3.Settings.DisableApopAuthentication to disable APOP authentication.
- IMAP: Fixed ID/validity check in CopyMessage method.
- IMAP: Added support for Exchange-style username/mailbox usernames (username@domain/mailbox and domain/username/mailbox).
- Networking: Enhanced logging of failed certificate validation errors.
- Proxy: Fixed ProxySocket's Connect method behavior with disabled timeout.
- SSL: Enhanced TlsVersion and TlsCipherSuite parameters checking.
- SSL: Fixed alert names in TlsException messages.
- Cryptography: Added Load, Save and Generate methods to PrivateKeyInfo and PublicKeyInfo classes.
- Cryptography: Enhanced CertificationRequest class to support request generating in addition to parsing.
- Cryptography: Fixed behavior with disabled UseFipsAlgorithmOnly on FIPS-only systems.
2014-02-26 Version 2014 R1 #
(build number 5171)
This update brings several improvements, workarounds and bugfixes.
Complete list of changes of version 2014 R1
- All: Various small low-level optimizations.
- Mail: Fixed a possible NullReferenceException that might occur when DNS resolving is very slow.
- Mail: Fixed a bug that caused some messages created using MailMessage.Clone() to be unsignable.
- Mail: Added new overloads for MailMessage.ValidateSignature method that makes it possible to specify more options.
- Mail: Fixed a bug in RTF to HTML converter that could make some loaded messages unsavable.
- Mail: Added workaround for slow chain building (rarely experienced).
- Mail: Added SkipTnefMessageProcessing option to make it possible to skip TNEF/winmail.dat attachment processing.
- MIME: Added an option to encode MailAddress without angle brackets.
- MIME: Fixed a bug in message validation code that caused some very complex messages to validate incorrectly.
- SMTP: Enhanced Smtp.ResolveDomainMX to use secondary DNS servers if needed, and added timeout argument.
- SMTP: Enhanced FQDN hostname detection for EHLO command.
- Networking: Added static NetworkSession.DefaultLogWriter property to make it easily possible to set a shared log writer for all Ftp/Sftp/Imap/Smtp/Pop3/Scp/Ssh/SshSession objects.
- Proxy: Enhanced logging capabilities of ProxySocket class (Socket4/Socks5 proxies).
- SSH: Added support for SHA-2 (SHA-256 and SHA-512) message authentication codes.
- SSH: Enhanced CTR mode workaround for OpenSSH 4.x.
- SSH: Fixed missing MAC algorithm ID in SshCipher.ToString().
- SSH: Standard form of SSH_MSG_KEX_DH_GEX_REQUEST packets is used with recent OpenSSH servers instead of its legacy form.
- SSL: Added new Certificate-based CertificateRequestHandler.CreateRequestHandler overloads.
- Cryptography: Fixed a bug in MD5SHA1 signature validation on .NET Compact Framework.
- Cryptography: Fixed AES CSP availability detection in FIPS-compliant mode.
- Cryptography: Fixed sorting of PKCS #7 signature attributes.
- Cryptography: Added support for AES-128-CBC SSLeay private keys.
- Cryptography: Added workaround for certificates and keys in Base64-encoded format ending with a zero octet.
- Core: Assemblies made more obfuscator-friendly.
- Core: Fixed null value comparisons in FileSystemItemComparer.
2013-12-02 Version 2013 R3 #
(build number 5085)
Support for Xamarin.iOS and Xamarin.Android
Rebex components now support Xamarin.iOS and Xamarin.Android,
making it possible to target iPad/iPhone and Android devices!
(The only exception is the Terminal Emulation component whose TerminalControl
object relies heavily on Windows Forms and is only available for Windows and Linux
at the moment.)
Support for .NET Compact Framework 3.9
In addition to .NET CF 2.0 and 3.5, we now support .NET CF 3.9 as well.
This makes it possible to target Windows Embedded Compact 2013,
Microsoft's latest incarnation of Window CE.
Assemblies for every supported platform for all
With every purchase, you now get binaries for all supported platforms.
Users with active support contract were upgraded for free.
This will make it easy to embrace the new trends - we offer a single API
that works with .NET, .NET Compact Framework, Mono, Xamarin.iOS and Xamarin.Android.
Support for Visual Studio 2013
All Rebex components now ship with full support for Microsoft Visual Studio 2013.
Older Visual Studio versions (2005 and higher) and .NET Framework versions (2.0 and higher)
are still supported as well.
Enhanced RTF-to-HTML converter
We fixed several issues found by our clients who deal with MSG or TNEF/winmail.dat messages,
making it possible to process even wider range of e-mail messages than before.
Complete list of changes of version 2013 R3
- All: Xamarin.iOS and Xamarin.Android officially supported in all components except Rebex Terminal Emulation.
- All: .NET Compact Framework 3.9 officially supported.
- All: Visual Studio 2013 officially supported.
- Mail: Added TreatBinaryRtfAsAlternateView option which forces a binary RTF to be treated as an AlternateView.
- Mail: Smtp and Imap object's Login method no longer attempts Kerberos in 'auto' mode if the username contains two slashes or binary zero.
- Mail: Fixed a bug in Imap/Pop3/Smtp.GetConnectionState() method causing NullReferenceException to be thrown in rare scenario.
- Mail: Fixed a bug in RTF parser which removed CR characters in some cases.
- Mail: Invalid RTF files no longer cause the mail parser to fail.
- Mail: RTF parser no longer fails on invalid escaped elements.
- Mail: Fixed bianry data handling in RTF parser.
- Mail: Better handling of improperly-placed 'signed' entities added to MailMessage object.
- MIME: Fixed possible NullReferenceException in RTF parser.
- MIME: Added workaround for messages produced by some Android devices using using "multipart/relative" instead of "multipart/related".
- MIME: RtfToHtml converter now supports hyperlinks nested within RTF tables.
- MIME: Fixed problematic handling of unsupported charsets in RTF.
- MSG: Submit and delivery date/time are persisted during .EML <-> .MSG format conversion.
- MSG: Optimized memory stream usage.
- MSG: Enhanced message body charset detection of Unicode MSG messages.
- MSG: Fixed attachment ordering issue in Outlook .MSG files with RTF body.
- SMTP: Added SkipContentTransferEncodingCheck to skip content-transfer-encoding check (not recommended).
- IMAP: Fixed attachment detection in GetMessageInfo/GetMessageList with ImapListFields.MessageSructure flag ('related' entities directly inside 'mixed' were not detected properly).
- Networking: On Windows 8 and 8.1, larger TCP receive buffer size is used by default. The default value caused low transfer speeds in many cases with FTP and SFTP.
- Networking: Added IsAuthenticated and IsConnected properties to NetworkSession (Ftp, Sftp, Scp, Imap, Smtp, Pop3, Ssh and SshSession objects).
- Proxy: Added support for digest authentication to HTTP CONNECT proxies.
- Proxy: Fixed ProxySocket.BeginSend and BeginReceived methods which used to fail in some scenarios.
- SSH: Added support for additional formats to SshPublicKey/SshPrivateKey object's SavePublicKey method and SshPublicKey constructor.
- SSH: Enhanced error checking to report a more meaningful error instead of "Invalid decoder state" in case of some connection failures.
- SSH: Enhanced GSSAPI/Kerberos support to be compatible with OpenSSH.
- SSH: Added Kerberos ticket delegation support.
- SSH: Added GSSAPI/Kerberos support to .NET CF version of SSH core.
- Cryptography: Changed Certificate.FindCertificates method not to include subordinate CAs in the search by default.
- Cryptography: Fixed CertificateStore.Exists on non-Windows platforms.
- Cryptography: Added workaround for opening certificate stores in .NET CF that don't exist yet.
- Cryptography: Added workaround for problem with DSA certificate in .PFX importing code on Windows Embedded Compact 2013.
- Cryptography: Added .NET CF support for Certificate.Associate(privateKey, permanentBind)
- Cryptography: Added Certificate.GetAuthorityKeyIdentifier() method.
- Cryptography: Changed SignerInfo and SignerInfo objects to use NULL parameters for hash algorithms (in order to match RSACryptoServiceProvider behavior).
- Core: Added FileLogWriter.Path to replace FileLogWriter.Filename.
- Core: Added LocalItem.ComputeCrc32() method.
- Core: Signed and encrypted message parsing made more compatible with broken messages.
2013-08-20 Version 2013 R2 #
(build number 4981)
IMAP/SSL and POP3/SSL superseded by Rebex Secure Mail
Many users who purchased one of the budget versions of the mail component later found out they in fact
needed both POP3 and IMAP capability and had to upgrade to Secure Mail.
Starting today, POP3 and IMAP will no longer be available as stand-alone components. All users with active support contract were
upgraded for free.
Complete list of changes of version 2013 R2
- Mail: Fixed a bug in SmtpTranserProgress.GetData() array creation.
- Mail: Enhanced RTF to HTML conversion in TNEF parser to handle embedded HTML.
- Mail: Improved support for hyperlinks in RTF-to-HTML converter.
- MIME: Enhanced whitespace folding parser and writer.
- MIME: Added workaround for Mono 2.10's broken iso-8859-n encoding objects.
- Networking: Added support for IPv6 hostnames with zone IDs.
- SSL: Added workaround for MS FTP's TLS 1.1 bug in close_notify handling.
2013-07-29 Version 2013 R1 #
(build number 4959)
Official support for Mono
All Rebex components now officially support Mono, an open source, cross-platform, implementation
of C# and the CLR that is binary compatible with Microsoft.NET. The same assemblies that work
on Windows now work on Mono in Linux or Apple's OS X as well.
Enhanced Outlook .MSG and winmail.dat/TNEF parsers
We have made numerous enhancements in
MailMessage object to make it even more compatible
with non-MIME message formats such as Outlook .MSG or winmail.dat/TNEF. The integrated RTF parser
and RTF to HTML converter has been improved as well.
Complete list of changes of version 2013 R1
- All: Added support for Mono.
- All: Fixed finalizers that used to call state-changed events in some cases.
- Mail: Added Attachment(byte) constructor.
- Mail: Added FIPS 140-2 compliant mode in which only FIPS-approved modules are used.
- Mail: Added workaround to make it possible to load MIME files with BOM headers.
- Mail: Fixed DIGEST-MD5 authentication (was incompatible with servers using different casing of 'MD5-sess') in IMAP, POP3 and SMTP.
- Mail: Added AttachmentBase.ToMimeEntity() method.
- Mail: Fixed GetConnectionState/CheckConnectionState on .NET CF in IMAP, POP3 and SMTP.
- Mail: Optimized RTF to HTML converter.
- Mail: Optimized quoted-printable entities encoder.
- Mail: Added support for 'start' parameter in 'multipart/related' (RFC 2387).
- Mail: Added workaround for invalid filenames in TNEF/winmail.dat attachments.
- Mail: All fields related to message data are now reset during MailMessage.Load.
- Mail: Conversion of RTF views into HTML can now be disabled.
- Mail: RTF to HTML converter enhanced to remove binary 0 characters from text.
- MIME: Fixed RTF binary data handling.
- MIME: Support for non-standard uuencoded MIME attachemnts added to MailMessage.
- MIME: Fixed MIME-encoded header splitting.
- MIME: Added MimeOptions.DoNotTrimHeaderValues.
- MIME: Added workaround for bad content-transfer-encoding in 'multipart' and 'message' entities.
- MIME: Fixed parser of base64-encoded embedded messages (used to fail in some cases).
- MIME: Mail message serialization optimized to be more memory-efficient.
- MIME: Better detection of non-MIME PKCS #7 SignedData entities.
- MIME: Added workaround for non-leaf resource entities.
- MIME: Fixed rare StackOverflowException when parsing broken RTF.
- MIME: Fixed exception message that reported TNEF parser error even though a different error occured.
- MIME: TNEF parser now disinguishes between text-only and binary RTF views.
- MIME: When converting RTF to HTML during TNEF/winmail.dat parsing, only attachments that were part of the original winmail.dat file are linked.
- MSG: Enhanced handling of charsets in Outlook .MSG parser.
- MSG: Fixed MimeOptions.LoadMsgProperties option that sometimes caused MailMessage.Save to fail.
- MSG: Fixed file name generation for RTF attachments in Outlook MSG parser.
- MSG: Added workaround for RTF views with too many end brackets.
- MSG: Sanity check added to date/time reader of Outlook .MSG parser.
- MSG: Added plain text preview generator for HTML-only .MSG files.
- MSG: Relaxed mandatory properties check in Outlook .MSG parser.
- MSG: Added workaround for Outlook .MSG with broken TransportMessageHeaders field.
- MSG: Added workaround for broken MessageId values in Outlook .MSG.
- SMTP: Binary MIME and 8-bit MIME is announced when required using MAIL FROM command's argument.
- SMTP: Adding Smtp.SendingMessage event.
- SMTP: Added Smtp.Settings.ReportTransferredData and extended TransferProgress to optionally report actual data.
- IMAP: Added support for Gmail-style extended LIST command (RFC 6154).
- IMAP: ImapFolderCollection implements IEnumerable<ImapFolder>.
- IMAP: Fixed DateTime.MaxValue handling in Imap.Search() method.
- IMAP: Added workaround for Gmail IMAP server that incorrectly used '[' and ']' characters in message flags.
- Proxy: Added support for HTTP CONNECT proxy communication logging.
- SSH: Fixed SshException.Data["ProtocolCode"] and .Data["ProtocolMessage"] values.
- SSH: Added verbose logging of raw data during welcome message exchange.
- SSL: SslInsertEmptyFragments property added to SslSettings.
- SSL: Fixed null TlsParameters.Certificate handling in server-side TlsSocket.
- Cryptography: Added support for anyExtendedKeyUsage attribute (in X509 certificates).
- Cryptography: Added DiffieHellmanCryptoServiceProvider class.
- Cryptography: Added PrivateKeyFormat.RawPkcs8 format for PrivateKeyInfo.Save and PrivateKeyInfo.Encode methods.
- Cryptography: RSAManaged.VerifyHash returns false on error.
- Cryptography: Fixed ArcTwoTransform to treat EffectiveKeySize of 0 as "current KeySize".
- Cryptography: HMAC fixed to use block length of 128 for algorithms with hashes larger than 256 bits.
- Cryptography: Fixed certificate verification to better handle server certificate with missing common name (used to throw NullReferenceException).
- Cryptography: Fixed handle leak in CertificateStore constructor.
- Core: Enhanced workaround for Stream.Seek on .NET CF.
- Core: FileLogWriter enhanced to log assembly version when opening log file.
- Core: Added missing PublicKeyInfo() constructor.
- Core: Added FileSet.ContainingDirectoriesIncluded option.
- Core: Added workaround for instances of FileStream that return "[Unknown]" name.
- Core: EncodingTools support IBM437 charset on all platforms.
- Core: Added CertificateFindOptions.None.
- Core: Added FileSystemItemCollection.UsePath property.
2012-11-12 Version 2012 R3 #
(build number 4700)
Official support for Visual Studio 2012
All Rebex components now ship with full support for Microsoft Visual Studio 2012.
Samples and tutorials were updated for a new project file format.
Older Visual Studio and .NET Framework versions are still supported too.
Task-based asynchronous methods
The major change is the addition of new Task-based asynchronous methods to .NET 4.0/4.5 variant of our components.
This brings our API up-to-date with the current trends and makes it possible to utilize the new await keyword available in .NET 4.5 and Visual Studio 2012.
Finally, asynchronous programming became easy and seamless.
Check out some of the updated samples to see this in action!
Events now using SynchronizationContext
Previously, events raised by asynchronous methods were running in a background thread, making them hard to use in GUI applications.
Now, events are raised using the SynchronizationContext captured when the asynchronous method was started,
which basically means the events will run on application's GUI thread, making it possible to update application's controls directly from the event code.
Simplified Connect methods
We simplified even the most common task - connecting to a server. All you have to supply to the Connect method of Ftp, Imap, Pop3 or Smtp object is the server hostname and an SslMode.
The Connect method automatically chooses the port according to the communication protocol and the specified SSL mode.
Simplified custom certificate validation
We added a new ValidatingCertificate event to Ftp, Imap, Pop3 and Smtp.
It makes it much easier to write custom certificate validation routines - all you have to do is add an event handler which either calls
Complete list of changes of version 2012 R3
- All: Added .NET 4.x-style task-based asynchronous methods to objects previously using .NET 1.x-style Begin/End asynchronous pattern.
- All: Asynchronous method events are raised using the current synchronization context for the asynchronous operation.
- All: Added options to force the old-style event behavior (not using the current synchronization context).
- All: Added Rebex.Legacy namespace to .NET 4.x builds to allow compiling code that uses old-style asynchronous methods.
- All: Added official support for Visual Studio 2012.
- Mail: Fixed bugs in DIGEST-MD5 authentication that caused it to fail with some servers (SMTP, POP3, IMAP).
- Mail: Mail address writer quotes address parts if needed.
- Mail: Added a new MailMessage.Sign(IEnumerable<Certificate>) overload.
- Mail: Enhanced TNEF/winmail.dat parser to support embedded messages.
- Mail: Charset names always use lowercase letters now.
- Mail: Added Settings property to Imap, Pop3 and Smtp objects.
- MIME: Fixed a bug that caused an 'attachment' content-disposition to be used for resources in some cases.
- MIME: Added support for non-MIME PKCS #7 signed attachments.
- MIME: Added workaround to MSG parser to handle transport message headers with no line ending.
- MIME: MimeOptions.OnlyParseHeaders now makes it possible to load headers with no CRLF ending.
- MIME: Fixed padding of multi-value fields in TNEF/winmail.dat parser.
- MIME: Enhanced embedded image support for TNEF/winmail.dat messages.
- MSG: Enhanced MSG parser to handle subject values with invalid characters.
- MSG: Fixed a bug in MSG message saving routines occasionally caused MailMessage.Save to fail when called on several MailMessage instances at the same time from multiple threads.
- SMTP: Added FIPS 140-2 compliant mode in which only FIPS-approved modules are used.
- SMTP: Fixed Smtp.Send methods to throw SmtpException instead of ArgumentException when supplied MailMessage has missing info needed for sending.
- SMTP: Added OAUTH2 authentication support.
- SMTP: Support for sending messages using .NET's SMTP delivery engine added to to SmtpConfiguration-based Smtp.Send method (useful in medium trust environments).
- SMTP: Added simplified Connect method overloads with SslMode argument.
- POP3: Multi-line response logging added.
- POP3: Added workaround for QuarkMail server which only supports ClearText authentication.
- POP3: Added simplified Connect method overloads with SslMode argument.
- IMAP: Added OAUTH2 authentication support.
- IMAP: Enhanced message structure parser to ignore invalid entities reported by some servers.
- IMAP: Added simplified Connect method overloads with SslMode argument.
- IMAP: Enhanced text part detection in IMAP message structure parser.
- Networking: NetworkSessionException is now the base class for all network protocol exceptions.
- Networking: Task-based asynchronous methods added to IFtp interface.
- Networking: Removed several Socket.Available calls, resulting in higher speed and Windows Azure compatibility.
- Networking: Events Traversing, TransferProgressChanged, DeleteProgressChanged and ProblemDetected added into IFtp to make it possible to get notified about significant actions and to be able to react to a problem in multi-file operations.
- SSH: Better error message for unsuccessful keyboard-interactive fallback workaround.
- SSH: Enhanced "Invalid decoder state" error reporting.
- SSH: Added support for diffie-hellman-group-exchange-sha256 key exchange algorithm.
- SSH: Added SshPublicKey class, SshSession.ServerKey property and FingerprintCheck.ServerKey property (to make it possible to determine server host key in addition to fingerprint).
- SSL: Fixed a bug in server-side TLS/SSL that caused it to fail when session resuming was enabled.
- SSL: Fixed TlsException serialization that failed for some errors.
- SSL: Fixed a bug that caused problems with TLS/SSL in FIPS-only mode.
- Cryptography: Fixed a bug in TransformFinalBlock method of Rebex.Security.Cryptography ciphers that caused interoperability issues with CryptoStream.
- Cryptography: Fixed PKCS#7 padding check in built-in ciphers.
- Cryptography: Added EncodingTools class that adds support for all the charsets needed on all platforms.
- Cryptography: Added auto-detection of a bug in unpatched .NET 3.5's AesCryptoServiceProvider object.
- Cryptography: Implicit ObjectIdentifier(string) constructor added.
- Cryptography: Fixed CryptoHelper.CreateAlgorithm to return CSP version of SHA-2 hash algorithms when available.
- Cryptography: Fixed CertificateFinder property behavior to keep old certificates if no certificates are found by the new finder.
- Cryptography: Server certificate verification routine now allows certificates with '*.domain.net' names to be used for 'domain.net' in addition to '*.domain.net'.
- Cryptography: Fixed a bug in private key decryption routine which failed with keys encrypted with PKCS #12 key derivation algorithm.
- Core: Fixed P/Invokes in NTLM/Kerberos code.
- Core: AddRange method added to file item collections.
- Core: FIPS 140-2 compliant mode enhancements.
- Core: Fixed certificate validation issue on Windows XP and Windows Server 2003.
- Core: Added Certificate.Thumbprint property.
- Core: Fixed a bug in certificate chain building routine that caused it to ignore additional stores in some cases.
2012-06-11 Version 2012 R2 #
(build number 4546)
RTF to HTML converter
Almost all e-mail messages use HTML and/or plain text for the message body.
But this is not always the case for Outlook .MSG messages and even for mail messages using the infamous winmail.dat/TNEF format.
Both of these often use RTF instead of HTML, causing interoperability issues with third-party clients.
Fortunately, Rebex Secure Mail users no longer have to suffer from this - we have added a RTF-to-HTML converter that converts the body of these messages into HTML, which means they can be then processed just like an ordinary e-mail!
Complete list of changes of version 2012 R2
- Mail: Added RTF to HTML convertor which is used to produce an HTML body for RTF-only Outlook MSG or winmail.dat/TNEF e-mails.
- Mail: AlternateView.SetContentFromFile now removes the byte-order-mark from the body text for text/* media types.
- Mail: Added workaround for TNEF attachments which use full instead of name only.
- Mail: MailSignatureStatus.SenderSignatureMissing value fixed (was identical to MissingSender by mistake).
- MIME: Added MimeMessage.Priority property.
- MSG: Invalid characters in attachmnent file names of Outlook MSG messages are now replaced with underscore character.
- MSG: Added support for '+' character in media type headers.
- MSG: Support for 'REPORT.IPM.Note.IPNRN' added to Outlook MSG parser.
- MSG: X-Outlook-* headers with non-ASCII characters produced by LoadMsgProperties are now properly MIME-encoded.
- MSG: Added workaround for MSG files falsely claiming to use UTF-16, which used to produce unreadable X-Outlook-* headers with LoadMsgProperties option.
- MSG: Enhanced handling of invalid media types in Outlook MSG messages.
- MSG: Fixed a bug in MSG parser that caused it to fail with signed and/or encrypted messages if MimeOptions.OnlyParseHeaders option was set.
- SMTP: Fixed a bug in static Smtp.Send method where a connection was established even though it was not needed.
- SMTP: SmtpTransferProgressEventArgs.TotalBytes property added.
- SMTP: Smtp.ResolveDomainMX method fixed to handle CNAME records as well.
- IMAP: Better error message for implicit SSL IMAP server sending plain packets.
- IMAP: Fixed a bug in Imap that occasionally caused an error when fetching message bodies.
- Networking: UseLargeBuffers option added into IFtpSettings.
- SSH: Added SshPrivateKey(AsymmetricAlgorithm) constructor that makes it possible to initialize it from RSACryptoServiceProvider/DSACryptoServiceProvider (useful for SmartCard-based keys).
- SSH: Fixed wrong handling of large remote SSH channel window sizes (used by mod_sftp server).
- SSH: Client certificate authentication added (compatible with VanDyke VShell server).
- SSH: ZLIB support announced even when not preferred (without that, we were unable to connect to servers that refuse uncompressed sessions).
- SSH: Fixed a bug that causes a misleading error to be reported on immediately-closed connections.
- SSH: Added workaround for mod_sftp/0.9.7 which occasionally produces broken DSA signatures.
- SSL: Fixed a misleading error message which was reported when certificate revocation status could not be checked.
- SSL: When ProtocolVersion error occurs, data received prior to it is logged.
- Cryptography: Fixed local/UTC time comparison in Certificate.IsTimeValid.
- Cryptography: Added implicit conversion between Certificate object and X509Certificate/X509Certificate2 objects.
- Cryptography: Enhanced compatibility with Mono on non-Windows platforms - Certificate validation now works!
- Cryptography: Support for saving .PFX/.P12 files added to Certificate.Save method.
- Cryptography: Added new overloads of Certificate.Associate that make it possible to permanently bind the private key to the certificate.
- Cryptography: Added Certificate.FriendlyName property.
- Cryptography: Fixed Certificate.SignHash method which used to fail on .NET 2.0 when an associated key was used for MD5SHA1 signature generation.
- Cryptography: Fixed MD5Managed.HashSize property which used to return 0.
- Cryptography: Certificate.HasPrivateKey code in .NET CF version changed to behave identically to .NET version.
- Core: Added FileSet.Flatten option (makes it possible to ignore source directory structure and copy all files into single target directory).
- Core: Enhanced error reporting of file-path-based methods.
- Core: Added LocalItem and LocalItemCollection classes (used by FileSet.GetLocalItems method).
2012-03-01 Version 2012 R1 #
(build number 4444)
Components DLLs have been renamed
We found out that the DLL naming scheme we decided to use back in 2003 was no longer sustainable and decided to change it.
we now have
Most of the other DLLs were renamed as well during the process (
Rebex.Ftp.dll, for example).
We are sorry for any inconvenience this may have caused, but an alternative solution - introduction of a new DLL for shared functionality - would not be hassle-free either.
Fortunately, in order to upgrade to the new version, most customers will only need to remove references to the old DLLs and add references to the new ones because the API is still backward-compatible.
Compatibility enhancements in Rebex Secure Mail
We are constantly improving our mail writers and parsers to be as compatible with third-party software as possible.
In this version, we added support for some embedded OLE objects in TNEF/winmail.dat e-mails (they are parsed as attachments)
and enhanced our PKCS #7 (S/MIME) writer which used to have some compatibility issues with Entrust CSP.
Many workarounds for badly structured messages were added as well. Rebex Secure Mail is now more compatible than ever.
Complete list of changes of version 2012 R1
- All: SecurityRuleSet.Level2 is used for .NET 4.0 binaries.
- All: Added a Stream.Flush() call after each Stream.Seek() or Stream.Position call in .NET Compact Framework (workaround for .NET CF FileStream bug).
- Mail: MimeHeaderCollection.GetAllHeaders and GetAllHeaderValuesRaw methods added.
- Mail: MailMessage.ReceivedDate added. Extracts the date from the topmost 'Received' header.
- Mail: Addes support for embedded OLE objects in TNEF/winmail.dat e-mails (they are parsed as attachments).
- Mail: Added workaround for broken TNEF/winamil.dat messages with CRLF suffix.
- Mail: Fixed a parser error while parsing inner MIME entities with missing headers.
- Mail: Removed bad character check for TNEF/winmail.dat message embedded attachments.
- MIME: Fixed a bug that caused problems creating MIME messages with large binary attachments.
- MIME: Added workaround for date headers with 'negative' hour parts.
- MIME: Attachment.GetContentStream() no longer removes the BOM header from text attachments.
- MIME: Added a workaround for broken messages with colon in a MIME parameter (replaced with an underscore).
- MIME: PKCS #7 attachments are only parsed if they appear to be an actual embedded message.
- MIME: Added workaround for incomplete Q-encoded header sections.
- MIME: Added MailDateTime.OriginalTime that returns the date in its original time zone.
- MIME: Added workaround for broken MIME-encoded headers with unencoded quotes inside.
- MIME: Fixed a bug in the process of searching for a suitable decryption certificate.
- MIME: PFX/P12-based CertificateFinder now supports identification by Subject Key Identifier for certificates with no explicit SKI.
- MSG: Compatibility enhancements in MSG reader.
- MSG: Additional .MSG-only properties are persisted when MimeOptions.LoadMsgProperties option is specified.
- MSG: Fixed a bug in MSG message writer that caused the messages to be not sendable from Outook.
- MSG: Enhanced linked resource detection in MSG writer.
- MSG: Fixed a problem in handling binary data embedded in RTF body parts.
- MSG: Fixed invalid usage of encoding when reading BodyText and BodyHtml in some Unicode MSG files.
- MSG: Support for Application specific OLE attachments added to MSG reader.
- SMTP: Compatibility enhancements in GSSAPI authentication.
- SMTP: Fixed Smtp.Send to report a proper exception when trying to send a signed message with 8bit or binary MIME entities through a server that doesn't support 8BITMIME or BINARY extensions.
- SMTP: Fixed a bug in legacy SMTP message sending mode that might have occasionally cause a timeout.
- SMTP: Added SmtpExtensions.ExplicitSecurity to make it possible to determine whether the server supports explicit TLS/SSL.
- POP3: Fixed argument handling in Login(GssApiProvider) method.
- POP3: Compatibility enhancements in GSSAPI authentication.
- POP3: Pop3MessageCollection implements IList<Pop3MessageInfo>.
- IMAP: Compatibility enhancements in GSSAPI authentication.
- IMAP: Added workaround for servers that report IMAP keywords as 'permanent' but not 'supported'.
- IMAP: ImapMessageCollection implements IList<ImapMessageInfo>.
- IMAP: Added new overloads of Imap.StoreMessage and Imap.StoreMessage that accept keywords.
- IMAP: Fixed a bug that caused notifications to not be fired during IDLE state (Imap.CheckForUpdates method).
- IMAP: Fixed a bug in the Login method that caused changed capabilities to be detected incorrectly on some servers.
- IMAP: Stream-based variant of Imap.GetMessagePart method added (the output stream receives data on-the-fly).
- IMAP: When retrieving message structure info, MIME-encoded filenames are properly decoded.
- IMAP: ClearText password replaced with asterisk characters in debug log.
- IMAP: If the server supports UIDPLUS extension, Imap.CopyMessage returns a list of affected messages and Purge can take a list of messages to make sure no other messages are purged.
- IMAP: Imap.GetMessageList called on an empty folder now sends a NOOP command to check for recently-arrived messages.
- IMAP: Fixed a bug in message structure parser that caused an error if an empty ContentId header is encountered.
- IMAP: Added workaround for 'disappeared messages' during long GetMessageList(Body) calls.
- Networking: Socket.NoDelay is used by default in non-CF version of Rebex components.
- SSH: Fixed error handling in SshSession.OpenTcpIpTunnel method that caused troubles when multiple channels were active at the same time.
- SSH: SshChannel no longer attempts to adjust window size after the channel has been closed.
- SSL: Fixed non-working TlsSocket.BeginSend and BeginReceive methods.
- Cryptography: Faster Blowfish and Twofish algorithms.
- Cryptography: SubjectPublicKeyInfo.Load method now supports binary keys.
- Cryptography: Removed lots of CryptoApi dependencies from Certificate code.
- Cryptography: 4096-bit DSA keys (used by some SSH servers) are no longer rejected.
- Cryptography: Diffie-Hellman and DSA algorithms fall back to managed ModPow calculation on .NET CF with missing "Enhanced DSA and Diffie-Hellman" CSPs.
- Cryptography: Added Certificate.Associate(PrivateKeyInfo) method.
- Cryptography: Certificates associated with a private key using Associate method now support MD5SHA1 hash algorithm and suitable for TLS/SSL client certificate authentication.
- Core: Fixed a bug in TraceLogWriter that caused an additional newline to be written at the end of each message.
- Core: Added FileSystemItem and FileSystemItemCollection classes.
- Core: Better readability in Verbose-level logs.
- Core: Thread ID added to all log messages.
2011-03-09 Version 1.0.4086.0 #
(build number 4086)
Complete list of changes of version 1.0.4086.0
- MSG: RTF data written into .MSG messages is compressed using LZFu. This enhances Outlook compatibility (drag&dropped messages no longer disappear).
- MSG: Added MimeOptions.LoadMsgProperties option to make it possible to load some .MSG-only properties not accessible otherwise.
- SMTP: Security (SmtpSecurity) and Parameters (TlsParameters) properties added to SmtpConfiguration.
2011-02-11 Version 1.0.4060.0 #
(build number 4060)
Complete list of changes of version 1.0.4060.0
- Mail: Fixed a bug that caused a failure when trying to verify a signature of a MailMessage with Sender header present.
- Mail: Messages with signature broken by WatchGuard Firebox are loaded fine now (although the signature is not usable any more).
- Mail: Load and save support for MS Outlook .MSG format added to MailMessage class.
- MIME: Automated PKCS#7 S/MIME blob detection for unknown "smime-type" values in Content-Type header.
- MIME: Added a workaround for Content-type arguments with missing quotes.
- MIME: Fixed a bug in mail message tree reader that sometimes caused bodies to be treated as attachments.
- MIME: Fixed an issue in MimeParameterList.Encode method that caused a bad format to be encoded when used separately.
- MIME: Improved exception messages for some header parsing errors.
- POP3: Added Pop3MessageInfoComparer class and Pop3MessageCollection.Sort method to ease sorting of message info items.
- POP3: Fixed bug in Pop3.Abort method that caused its call to be ignored during very fast transfers.
- POP3: Added Pop3Options.IgnoreInvalidEndings option to make it possible to ignore invalid endings in message data sent by some broken POP3 servers.
- POP3: Added workaround for Gmail's POP3 service which makes retrieved messages invisible next time.
- POP3: Added Pop3.GetMessageSequenceNumber method which converts a unique ID to sequence number.
- IMAP: ImapMessageCollection.Remove method added.
- IMAP: ImapSearchParameter.Arrived now accepts DateTime.MinValue as "since" argument.
- IMAP: Added ImapMessageInfoComparer and ImapMessageCollection.Sort method to ease sorting of message info items.
- IMAP: The default value of Imap.Encoding is now selected according to the current locale.
- IMAP: ContentId property added to ImapMessagePart object.
- ProxySocket: Added a new ILogWriter implementation that logs all messages to .NET's System.Diagnostics.Trace.
- Cryptography: Added a new overload of SshPrivateKey.Save to make it possible to save keys in SSLEay/OpenSSH format (in addition to PuTTY .ppk and PKCS #8 formats).
- Cryptography: Added CertificateChain.Save method to save the chain in .p7b format.
- Cryptography: Fixed a bug in DistinguishedName object that caused the elements of string representation of DNs to be reversed.
- Cryptography: Added CryptoHelper.ForceManagedAes flag as a workaround to .NET's leaking AesCryptoServiceProvider.
2010-07-20 Version 1.0.3854.0 #
(build number 3854)
Complete list of changes of version 1.0.3854.0
- Mail: A more descriptive exception is thrown when attempting to save a mail message into a directory path instead of file path.
- Mail: Changed routine for fixing invalid filenames, it no longer changes the '%' character.
- Mail: Added a MimeOptions.DisableSinglePartHtmlWorkaround option to disable single-part HTML workaround in MailMessage.
- Mail: Attachment, view and resource collections' GetEnumerator is now an implementation of IEnumerable<T>.
- MIME: Added support for AES ecnryption (128, 192 and 256bit).
- SMTP: Smtp class inherits from NetworkSession base class that implements some common properties.
- POP3: Pop3 class inherits from NetworkSession base class that implements some common properties.
- POP3: Added a workaround for an old version of Lotus Domino that advertises APOP support but don't actually support it.
- POP3: Pop3MessageCollection implements IEnumerable<Pop3MessageInfo>.
- IMAP: Imap class inherits from NetworkSession base class that implements some common properties.
- IMAP: ImapMessageCollection implements IEnumerable<ImapMessageInfo>.
2010-05-20 Version 1.0.3793.0 #
(build number 3793)
Complete list of changes of version 1.0.3793.0
- All: Packages for .NET 4.0 and Visual Studio 2010 now available.
- Mail: Fixed a bug that caused an exception to be raised when assigning one MailMessage's mail address collection property to another.
- MIME: Added MimeOptions.DoNotCloseStreamAfterLoad option.
- MIME: Added a workaround for parsing 'References' header with missing angle brackets.
- Mail: Signed and/or encrypted e-mail messages with TNEF body are now parsed correctly.
- SMTP: Added MimeOptions.DoNotPreloadAttachments to make it possible to handle extremely large attachments.
- POP3: Added a workaround for QuarkMail Server that incorrectly announces authentication capabilies.
2010-03-11 Version 1.0.3723.0 #
(build number 3723)
Complete list of changes of version 1.0.3723.0
- Mail: MailMessage.CreateReply now supports and processes the Refereces header according to RFC 2822 and common practices.
- Mail: Added MailMessage.ToByteArray() and MailMessage.Load(byte) methods.
- Mail: Attachment.ContentDescription property added.
- MIME: MimeEntity.SetSignedContent and SetEnvelopeContent methods enhanced to disallow creating circular paths.
- MIME: Added support for TNEF-based HTML bodies.
- MIME: Fixed a bug in binary MIME parser that caused broken data to be parsed.
- MIME: MailAddress.ToString and MailAddressCollection.ToString methods now quote display names if needed.
- MIME: Fixed the MIME parser behavior with Mimeoptions.DoNotParseMimeTree options on non-compliant messages with lines too long.
- MIME: MIME parser enhanced to handle non-compliant input data with duplicate <CR> characters.
- Mail: Added a new overload of MailMessage.Sign method to make it possible to specify signature style.
- Mail: Better handling of application/pkcs7-mime attachments that are not an S/MIME signature.
- Mail: Added MimeOptions.SkipSenderCheck option to make it possible to skip sender check when validating signatures using MailMessage.ValidateSignature method.
- MIME: Support for S/MIME messages encrypted using RC2 with effective key length not equal to key data length.
- SMTP: Added NTLM and GSSAPI/Kerberos authentication support to .NET Compact Framework version.
- SMTP: Added Smtp.DefaultImplicitSslPort and Smtp.AlternativeExplicitSslPort constants
- POP3: Added NTLM and GSSAPI/Kerberos authentication support to .NET Compact Framework version.
- POP3: Added Pop3.DefaultImplicitSslPort constant.
- IMAP: Two new methods in ImapMessageCollection - ToSequenceNumberMessageSet and ToUniqueIdMessageSet.
- IMAP: Added NTLM and GSSAPI/Kerberos authentication support to .NET Compact Framework version.
- IMAP: Added ImapListFields.MessageStructure value, ImapMessageInfo.GetParts method and Imap.GetMessagePart method to make it possible to evaluate and download message views, resources and attachments individually without the need to download the whole message.
- IMAP: Communication compression support added. Needs to be enabled using Imap.EnabledExtensions.
- IMAP: Fixed a bug in ImapMessageSet.Add and AddRange method s that made them fail when adding multiple non-range values.
- IMAP: Envelope parser enhanced to better handle envelopes with bad e-mail addresses.
- IMAP: Date parser enhanced to handle rare two-digit-year date values properly.
- IMAP: Added several new search criteria to ImapSearchParameter class: All, Unread (NotSeen), MessageSet, Keyword, NotKeyword and Not.
- IMAP: Added a workaround for Exchange 2007 server that doesn't properly support searching address headers such as From, To or CC.
- IMAP: Fixed a bug in GetMessageInfo that made it set the Seen flag when called with ImapListFields.Body even if ImapOption.DoNotPeekMessage was enabled.
- IMAP: Added support for distinct authentication and authorization usernames according to RFC 4616.
- IMAP: Added Imap.DefaultImplicitSslPort constant.
- ProxySocket: The underscore character is now allowed in hostnames (this is non-standard, but used by Windows).
- ProxySocket: FileLogWriter is capable of logging into a single file from multiple applications now.
- ProxySocket: ProxySocket.Send behavior changed to always send all the data or fail.
- Cryptography: Added Certificate.LoadDerWithKey method to make it possible to easily load certificates with private keys in external file (Unix-style).
- Cryptography: Support for PKCS #7 EnvelopedData encrypted using RC2 with effective key length not equal to key data length.
- Cryptography: Fixed a bug in EnvelopedData class that cause a NullReferenceException to be raised when unsupported encryption algorithm is encoutered.
- Cryptography: Internal ModPow method optimized.
- Cryptography: Key generation support removed from RSAManaged a DSAManaged. No part of any of our components ever used it at it was prohibitively slow anyway.
- TLS/SSL: TlsSocket.SessionID is deprecated because its global cache was unsuitable for most applications. TlsSocket.Session (and the associated TlsSession class) should be used instead.
2009-10-27 Version 1.0.3588.0 #
(build number 3588)
Complete list of changes of version 1.0.3588.0
- Mail: MailMessage object's BodyText and BodyHtml properties now remove illegal characters when set.
- Mail: LinkedResource.FileName property added.
- MIME: Mail messages with empty TNEF/winmail.dat attachment no longer cause an exception to be thrown.
- Mail: Added MimeOptions.SkipCertificateUsageCheck option to make it possible to skip certificate usage check.
- MIME: Fixed a bug that caused an exception to be thrown when signing a mail message on FIPS-enabled systems.
- SMTP: Kerberos, NTLM and Negotiate authentication methods through GSSAPI/SSPI are now supported (not yet available on .NET Compact Framework).
- SMTP: GSSAPI or NTLM is also attempted in Auto mode if the mail server doesn't support any other authentication methods.
- POP3: Kerberos, NTLM and Negotiate authentication methods through GSSAPI/SSPI are now supported (not yet available on .NET Compact Framework).
- POP3: Added workaround for I&ES Mail Server that doesn't like TOP n 1 command.
- IMAP: Fixed a bug in Imap object's External authentication method implementation.
- IMAP: GSSAPI or NTLM is also attempted in Auto mode if the mail server doesn't support any other authentication methods.
- IMAP: Added a workaround for servers that reply with FETCH BODYSTRUCTURE when FETCH BODY is requested.
- IMAP: Kerberos, NTLM and Negotiate authentication methods through GSSAPI/SSPI are now supported (not yet available on .NET Compact Framework).
- IMAP: Message structure parser enhanced to be compatible with more servers and distinguish attachments and linked resources.
- ProxySocket: Proxy object now has Encoding property that makes it possible to specify character set to be used for parsing server responses.
- ProxySocket: ProxySocketException.ErrorCode property now returns HTTP and Socket4/Socks5 error codes when available.
- ProxySocket: SspiAuthentication and GssApiProvider classes added that provide GSSAPI/SSPI functionality.
- Cryptography: Certificate's CRL distribution point list can be accessed using GetCrlDistributionPoints method.
2009-07-15 Version 1.0.3484.0 #
(build number 3484)
Complete list of changes of version 1.0.3484.0
- MIME: SHA-2 now works with private keys in non-Microsoft key storages (such as Smart Cards) as well.
2009-07-10 Version 1.0.3479.0 #
(build number 3479)
Complete list of changes of version 1.0.3479.0
- Mail: First public release of the .NET Compact Framework package of Rebex Secure Mail.
- Mail: Signature parser enhanced to better parse "signed" e-mails with missing signature.
- Mail: Binary attachments claiming to be text are now parsed as application/octet-stream.
- MIME: IEnumerable<T> support added to collections for .NET 2.0 and higher.
- MIME: Fixed a bug in MimeHeaderCollection class that made it possible to add a null header.
- MIME: Date header parser enhanced to handle invalid ';' characters.
- MIME: Added support for messages signed using algorithms based on SHA-2 (SHA-256, SHA-384 and SHA-512).
- IMAP: Added workround for Gmail that is unable to select a localized version of the Inbox folder. The inbox folder is now reported as Inbox for all Gmail language variants.
- IMAP: Fixed a bug in IMAP response parser that caused it to fail in rare circumstances.
- Cryptography: .PFX/P12 private key file loading support for Windows Mobile 5 and newer.
- Cryptography: Added support for signatures based on SHA-2 (SHA-256, SHA-384 and SHA-512).
- Cryptography: If .NET 3.5 is available, a new and much faster AES implementation is used instead of RijndaelManaged.
- Cryptography: Behavior of certificate finders in CMS/PKCS #7 was enhanced - embedded certificates are always searched now.
- TLS/SSL: Enhanced logging of certificate-related actions during the TLS/SSL negotiation.
2009-05-20 Version 1.0.3428.0 #
(build number 3428)
Complete list of changes of version 1.0.3428.0
- Mail: Added a workaround for broken Date headers to MailMessage class - when an unparsable Date header is encountered, the date value from the topmost Received header is used instead.
- Mail: Fixed a bug in the TNEF parser that caused an exception to be thrown when parsing rich text bodies that contain zero characters (which are perfectly legal for RTF, unfortunately).
- Mail: MailDateTime class now supports implicit conversion from DateTime.
- Mail: Long file name support for attachments added to TNEF (winmail.dat) parser.
- SMTP: Added support for RFC 1870 - message size declaration.
- SMTP: Added SmtpConfiguration class that makes it possible to read SMTP settings from application configuration file's /configuration/system.net/mailSettings/smtp node.
- SMTP: Fixed a bug that caused an exception when sending a message with embedded message entity using an 8bit content transfer encoding through a server that doesn't support 8bit MIME.
- SMTP: Disposing Smtp object from another thread while an operation is in progress no longer causes NullReferenceException and other similar errors to occur in the operation thread.
- POP3: GetMessageList no longer fails on duplicate unique IDs because RFC 1939 actually allows them.
- POP3: Disposing Pop3 object from another thread while an operation is in progress no longer causes NullReferenceException and other similar errors to occur in the operation thread.
- POP3: GetMessageList or GetMessageInfo methods enhanced to make them compatible with servers that return the first message line as well when retrieving headers. In previous versions, this might have occasionally lead to parsing errors.
- POP3: Enhanced GetMessageHeaders to always retrieve the headers only - on some servers, it used to retrieve the first line of the message as well.
- IMAP: Fixed a bug in Imap.SelectFolder method that threw ArgumentOutOfRangeExceptions on some servers.
- IMAP: Imap.SelectFolder now accepts an empty folder name because some servers (Zarafa) use it for the root folder.
- IMAP: Added ImapMessageInfo.GetRawHeaders method.
- IMAP: Fixed a bug in Imap.GetMessageHeaders method that caused it to download the whole message.
- IMAP: SelecteFolder, UnselectFolder and Disconnect methods no longer purge messages marked as Deleted in the currently selected folder. New overload of UnselectFolder method was added that makes it possible to purge the messages when needed.
- IMAP: Headers are now fetched using BODY.PEEK[HEADER] instead of RFC822.HEADER to improve IMAP server compatibility.
- IMAP: Added a new ImapOptions.UsePeekForGetMessage option to make it possible to avoid automatically marking downloaded messages as read.
- IMAP: StoreRawMessage method added to make it possible to upload a raw message from a stream without parsing it.
- IMAP: Gmail's XLIST command is used instead of LIST by default and a new property ImapFolder.Purpose was added to make it possible to detect which folder is which regardless their national name.
- IMAP: Added workaround for IMAP servers that return NIL as a folder delimiter (slash is used instead).
- IMAP: Added workaround for servers that return the same folder name twice for unknown reasons.
- IMAP: Invalid IMAP response lines such as "* AVK-VIRUS-CHECK: 1" are now ignored.
- IMAP: Added workaround for broken IMAP servers that use their default charset where modified UTF-7 is required.
- IMAP: Disposing Imap object from another thread while an operation is in progress no longer causes NullReferenceException and other similar errors to occur in the operation thread.
- IMAP: Added ImapMessageIfo.GetRawHeaders method.
- IMAP: Added MimeHeader.DecodeMimeHeader method.
- IMAP: Added workaround for Exchange 2007's IMAP server that is unable to return the proper structure of multipart/signed messages.
- TLS/SSL: Exception thrown by the certificate verifier because of certificate hostname mismatch is more descriptive.
- TLS/SSL: Added a workaround for vsftpd that occasionally leaks unencrypted error messages while TLS/SSL is in use, which causes an error when the client tries to decode them as proper TLS/SSL messages.
- TLS/SSL: Fixed a bug that could cause a deadlock when closing a socket from one thread that is currently sending data using another thread.
- TLS/SSL: Fixed possible NullReferenceException in TlsSocket class.
- TLS/SSL: BeginSend and BeginReceive methods work again.
2009-02-14 Version 1.0.3333.0 #
(build number 3333)
Complete list of changes of version 1.0.3333.0
- MIME: Added experimental TNEF (winmail.dat) support to MailMessage class.
- MIME: Added MimeOptions.OnlyParseHeaders option to make it easily possible to parse message headers only.
- MIME: Fixed a problem with badly-formed MailMessage that was produced after being parsed with DoNotParseMimeTree option.
- MIME: It is now possible to set BodyHtml and BodyText to null.
- SMTP: Fixed a problem with sending messges using "binary" content transfer encoding and parsed using DoNotParseMimeTree option.
- SMTP: Fixed a problem in ResolveDomainMX that caused it to 'resolve' domains that don't exist.
- IMAP: Added support for keywords (custom flags).
- IMAP: Added a workaround for qq.com IMAP server that advertises PLAIN authentication method support but only accepts LOGIN.
- ProxySocket: Fixed a bug in Socks4/Socks5 proxy code that made it impossible to use FTP in active mode with these proxies.
- Cryptography: CertificateStore.FindCertificate overloads that accept DistinguishedName now search for certificates signed by intermediate CAs as well.
- Cryptography: Enhanced treatment of empty passwords in the PFX loader.
- Cryptography: Certificates with SubjectAlternativeName extension marked as critical are now treated as not having any e-mail address assigned to them if no e-mail address is found in the extension data.
- Cryptography: Fixed a bug in DiffeHellmanManaged.ImportParameters method that made it impossible to import key with all parameters filled.
2009-01-12 Version 1.0.3300.0 #
(build number 3300)
Complete list of changes of version 1.0.3300.0
- Mail: A better exception is now thrown by a method that has been terminated by calling Dispose from another thread.
- Mail: Asynchronous operations now use a thread pool.
- Mail: Asynchronous method threads are now named.
- MIME: Added a workaround for parsing '@' character in Content-Type parameters.
- MIME: Fixed a bug that caused the DefaultEncoding to not be converted when converting MailMessage to MimeMessage or when sending MailMessage using the Smtp object.
- MIME: Added a workaround for Dovecot server that occasionally adds an extra CR (0xD) character at the end if its response when retrieving mail headers using IMAP.
- MIME: GetRaw method added to MimeHeaderCollection class.
- MIME: Added a workaround for Outlook invitations with missing charset.
- MIME: Fixed a bug that caused some text parts to be parsed as attachments instead.
- MIME: Added workaround for some badly formatted dates.
- MIME: Workaround for for Mac mail introduced in 1.0.2800.0 modified because it was incompatible with Outlook 2003 in combination with S/MIME messages.
- MIME: Order of settting BodyText and BodyHtml now does not affect the actual order in the message. Previously, using an uncommon order caused problems because Gmail and iPhone prefer the last part instead of HTML part.
- MIME: Added Insert method to AlternateViewList class.
- MIME: Added MimeOptions.AllowAnyTextCharacters option to make it possible to use any characters in text attachments.
- MIME: Added IgnoreUnparsableSignatures option to MimeOptions to make it possible to read mail messages with broken signatures.
- MIME: Added partial Mono support to make it possible to parse S/MIME messages (signature validation is still unsupported).
- SMTP: Added enhanced logging capabilities.
- POP3: GetMessage method now returns the transferred message length instead of number of bytes transferred.
- POP3: Fixed a bug that caused a wrong error to be reported when POP3 server closes the connection while transferring data.
- POP3: Added a workaround for Exchange 2000 that is unable to properly transfer e-mail with a body that starts with a dot.
- POP3: A proper Pop3Exception is now thrown if duplicate unique ID is found in a message list.
- POP3: Added workaround for Windows and GoDaddy's POP3 implementation that falsely advertises APOP support.
- POP3: Added enhanced logging capabilities.
- IMAP: Added a workaround for servers that allow the "NO" reply in response to FETCH command - a behavior that is strongly discouraged.
- IMAP: Added FolderExists method to Imap class.
- IMAP: Added a workaround for buggy servers that don't understand the 'RFC822' item, although they process the functionally equivalent 'BODY' item just fine.
- IMAP: Added enhanced logging capabilities.
- Cryptography: Added support for reading and setting private key comment.
- Cryptography: Added RootCertificate and LeafCertificate properties to CertificateChain class.
- Cryptography: Added GetCommonName method to DistinguishedName class.
- Cryptography: Added IEnumerator support to CertificateChain.
- Cryptography: Added Equals method to DistinguishedName class.
- Cryptography: Fixed a bug in OID decoding routine that cased it to occasionally hang on broken input data.
- Cryptography: Added new Certificate.LoadPfx to make it possible to load keys into machine store.
- Cryptography: Fixed a problem in Certificate.Decrypt method that made the decryption fail with some rare certificates.
- Cryptography: Added Certificate.Associate method to make it possible to associate a RSA/DSA crypto service provider with access to a private key with a certificate.
- TLS/SSL: Anonymous TLS/SSL ciphers are now supported (but disabled by default).
- TLS/SSL: Fixed an internal static method that was not thread safe.
2008-07-23 Version 1.0.3127.0 #
(build number 3127)
Complete list of changes of version 1.0.3127.0
- IMAP: Response-reading code enhanced to handle oversized responses that occured while searching with some servers.
2008-06-14 Version 1.0.3087.0 #
(build number 3087)
Complete list of changes of version 1.0.3087.0
- SecureSocket: Fixed a bug that caused data loss when a TLS/SSL connection was closed in a certain way.
- ProxySocket: New ISocket interface to make it possible to easily implement custom transport layers.
- ProxySocket: Fixed an unhandled exception that occured during a failed connection to a proxy specified by an IP address.
- MIME: Added automated detection of Unicode body parts with missing header encoding info.
- MIME: Added workaround for quote-printable headers with an invalid linefeed character in the middle.
- MIME: Fixed a bug in MailMessage class that caused an attachment to be parsed as texy body if no text body was present.
- MIME: Invalid character removal routing now works for big5 and shift_jis encodings as well.
- MIME: New tutorial for creating HTML e-mail with embedded pictures.
- IMAP: Added hostname validity checking to Connect method.
- IMAP: Added OR operator to search options.
- POP3: Added hostname validity checking to Connect method.
- POP3: Added workaroud for GoDaddy and Windows POP3 servers that announce APOP authentication support but don't actually support it.
- SMTP: Added hostname validity checking to Connect method.
- SMTP: Added several missing BeginSend methods.
- SMTP: Added SmtpOptions.AllowNullSender option to make it possible to send a message with null envelope sender.
- MIME: Added a workaround to make it possible to parse S/MIME messages with missing smime-type header.
2007-12-06 Version 1.0.2896.0 #
(build number 2896)
Complete list of changes of version 1.0.2896.0
- All: Packages for .NET 3.5 and Visual Studio 2008 now available.
- MIME: Added MimeOptions.AlwaysWriteContentTransferEncoding option to make it possible to force the MIME encoder to always output the Content-transfer-encoding header, even when it is 7bit.
- MIME: When using iso-2022-jp charset to encode Japanese body text, ESC character (0x1B) is treated as 7bit-safe, matching the behavior of contemporary mail agents.
- MIME: Fixed a bug in MIME encoder that made it failed when a 16-bit Unicode charset was used in a message body.
- MIME: Fixed a problem in a mail parser that caused e-mail addresses containing some special characters to be parsed incorrectly.
2007-11-11 Version 1.0.2871.0 #
(build number 2871)
Complete list of changes of version 1.0.2871.0
- SecureSocket: Added built-in PFX-based client certificate request handler.
- SecureSocket: Fixed a bug in the negotiation part of the TlsSocket class that caused problems when handling large packets.
- Cryptography: Added support for loading PuTTY private keys.
- MIME: Added workaround for invalid base64 encoded headers with whitespaces.
- MIME: Fixed problems in handling of filenames with invalid characters.
- IMAP: Bcc property added to ImapMessageInfo class.
- IMAP: IsEncryptedOrSigned property added to ImapMessageInfo class.
2007-08-30 Version 1.0.2800.0 #
(build number 2800)
Complete list of changes of version 1.0.2800.0
- SecureSocket: Fixed a bug in the server-side TLS/SSL code that caused a SSL2-style ClientHello message to be parsed incorrectly.
- Cryptography: Added support for Blowfish and Twofish ciphers.
- Cryptography: Added new CertificateIssuer class for certificate creation.
- Cryptography: Added new CertificateChain-based certificate finder.
- Cryptography: Certificate revocation list is now available in EnvelopedData and SignedData classes.
- Cryptography: When the CertificateFinder property is changed in EnvelopedData and SignedData Certificate, the new finder is now immediately used to find any missing certificates.
- Cryptography: Several serialization bugs in EnvelopedData and SignedData classes were fixed.
- Cryptography: Certificate class has a new Extensions property that makes the extension collection accessible.
- Cryptography: Various other changes that do not affect the FTP protocol.
- MIME: New CreateReply method added to the MailMessage class.
- MIME: Added workaround for Mac mail that is unable to correctly parse messages with a single root text/html entity.
- MIME: Successive calls to Attachment.ContentMessage property now return the same object.
- MIME: A new constructor overload added to the Attachment class.
- MIME: DefaultEncoding property added - it is used to enforce a specific default charset for mail body and headers.
- MIME: Broken base64-encoded inner messages are now converted to binary attachments during MIME parsing.
- MIME: Serialization bug in MimeEntity and MimeMessage was fixed.
- MIME: Added support for broken 'eBay-style' time zones.
- MIME: Support for several kinds of broken MIME-encoding in headers.
- IMAP: ParseUniqueId and BuildUniqueId methods added to ImapMessageSet class.
- IMAP: Added support for partial message retrieval using GetMessage method. This can be used for resuming failed downloads.
- IMAP: Added support for IDLE command through a new overload of the CheckForUpdates method.
2007-05-24 Version 1.0.2700.0 #
(build number 2700)
Complete list of changes of version 1.0.2700.0
- MIME: CertificateFinder can now be changed even after a message has been loaded.
- MIME: Added UnparsableHeader event to MailMessage and MimeMessage/MimeEntity.
- MIME: Clone method added to MailMessage class.
- MIME: MailMessage now tries to preserve the order of most message headers.
- MIME: Added a new GetContentStream overload to Atachment/AlternateView/LinkedResource and MimeEntity/MimeMessage classes that returns a writable stream.
- MIME: Attachment.ContentMessage property now returns a reference to the embedded message, not its clone.
- MIME: Added a workaround for MS Outlook's broken S/MIME parser that modifies the parsed data, incorrectly causing signature validation to fail in some circumstances.
- MIME: Detection of encoding of 8bit headers enhanced - content type encoding is now used by default. This is more compatible with broken messages.
- MIME: Detection of Outlook's non-MIME .msg files added to the Load method. This proprietary format is not supported, but at least we throw a nice exception now.
- MIME: Parser changed to be more compatible with broken messages.
- MIME: Invalid charsets such as '1252' or 'CP1252' are now supported and assumed to be 'windows-1250'.
- MIME: Fixed the mail address route part parser that could hang on a specific form of an e-mail address.
- MIME: Content-type and content-disposition header parameters now use a defined order.
- Cryptography: CertificateFinder can now be changed even after an EnvelopedData or SignedData has been loaded.
2007-04-20 Version 1.0.2666.0 #
(build number 2666)
Complete list of changes of version 1.0.2666.0
- SecureSocket: Speed drop caused by the data receiving loop introduced in the previous build was fixed.
- SMTP: Added CheckConnectionState/GetConnectionState methods to check the state of the connection without sending any command to the server.
- POP3: Added CheckConnectionState/GetConnectionState methods to check the state of the connection without sending any command to the server.
- IMAP: Added CheckConnectionState/GetConnectionState methods to check the state of the connection without sending any command to the server.
- MIME: Invalid MIME messages that use LF-only end-of-line markers instead of CRLF are now parsed as well.
- MIME: Entities with a missing body are assumed to have an empty body.
- MIME: Default Hebrew charset has been changed from iso-8859-8 to windows-1255.
- MIME: If both iso-8859-1 and iso-8859-2 are unable to encode the text, windows-1252 and windows-1250 are also tested before trying additional charsets.
- MIME: Fixed MimeEntity.Name and ContentDisposition.FileName properties that might fail for some filenames with invalid characters.
- MIME: Embedded messages encoded as base64 or quoted-printable are now parsed correctly.
- MIME: If content transfer encoding value is an empty string, 7bit is assumed instead.
- MIME: Maximum allowed line length on input was extended to 65536.
- MIME: Rules for parsing address headers were relaxed to allow more kinds of invalid input data.
- MIME: Header parser enhanced to assembly multi-byte characters that were split accross several encoded blocks.
- MIME: IgnoreUnparsableHeaders option assumes a reasonable default for invalid content type headers.
2007-03-06 Version 1.0.2621.0 #
(build number 2621)
Complete list of changes of version 1.0.2621.0
- SecureSocket: New refactorred TLS/SSL core introduced.
- SMTP: IPv6 support with .NET Framework 1.1/2.0/3.0
- IMAP: IPv6 support with .NET Framework 1.1/2.0/3.0
- POP3: IPv6 support with .NET Framework 1.1/2.0/3.0
- MIME: Fixed a bug in one of the MailAddress constructors that caused an exception to be thrown when a specifically malformed e-mail address was encountered by Imap's GetMessageList in envelope mode.
2007-01-11 Version 1.0.2567.0 #
(build number 2567)
Complete list of changes of version 1.0.2567.0
- Cryptography: Added PrivateKeyInfo class and an ability to load and save private keys.
- Cryptography: Fixed a bug in DSAManaged class that made impossible to use keys of some sizes.
- Cryptography: Random big integer generator optimized.
- Cryptography: Several typos in documentation fixed.
2006-12-12 Version 1.0.2537.0 #
(build number 2537)
Complete list of changes of version 1.0.2537.0
- MIME: Fixed a bug that often made serialization impossible. This also affected serialization of ImapMessageCollection and Pop3MessageCollection.
2006-11-30 Version 1.0.2525.0 #
(build number 2525)
Complete list of changes of version 1.0.2525.0
- IMAP: Fixed a bug in message structure parser that could cause GetMessageList or GetMessageInfo to fail if retrieving attachment info or HTML and text bodies.
2006-11-27 Version 1.0.2522.0 #
(build number 2522)
Complete list of changes of version 1.0.2522.0
- SecureSocket: Fixed a bug in the Compact Framework version that caused an unnecessary slowdown when using SSL/TLS.
- MIME: Following parsers made more benevolent: date header, content type parameter parser, address parser, MIME version parser, quoted-printable header parser and Base64 parser.
- MIME: Fixed a bug in phrase header parser that could cause the component to hang.
- IMAP: Fixed a bug in ImapFolder that caused a wrong vaule NotSeenMessageCount for folders returned by Imap.GetFolderInfo method.
- IMAP: Added AttachmentInfo to ImapListFields enum and the corresponding HasAttachment property to ImapMessageInfo class to make it possible to determine whether the message has any attachments without downloading it.
2006-10-18 Version 1.0.2482.0 #
(build number 2482)
Complete list of changes of version 1.0.2482.0
- Cryptography: Fixed a bug in DSAManaged class that made impossible to use keys of less common sizes.
- MIME: Fixed a bug that could cause the parser to throw ArgumentNullException if a specifically-malformed Content-Type header was encountered.
2006-09-05 Version 1.0.2439.0 #
(build number 2439)
Complete list of changes of version 1.0.2439.0
- SecureSocket: Several TLS/SSL optimization changes.
- ProxySocket: Added support for NTLM authentication through HTTP CONNECT proxies.
- Cryptography: Several new methods.
- MIME: Fixed a bug that could cause the parser to hang if a specifically-malformed Content-Type header was encountered.
- MIME: Base64 parser made more liberal.
- MIME: Address list parser enhanced to be able to parse more variants of malformed lists.
- IMAP: Added support for NTLM authentication.
- POP3: Added support for NTLM authentication.
- SMTP: Added support for NTLM authentication.
- IMAP: Added support for EXTERNAL authentication (to be used with client certificate authentication).
2006-08-25 Version 1.0.2428.0 #
(build number 2428)
Complete list of changes of version 1.0.2428.0
- SecureSocket: Fixed a bug that could cause a failure or timeout on extremely fast connections.
- Cryptography: A PKCS#7 parser and encoder added.
- Cryptography: Several new methods added to Certificate and CertificateStore classes.
- SecureMail: Initial release of Rebex Secure Mail for .NET with support for S/MIME and SMTP/SSL, POP3/SSL and IMAP/SSL.
- MIME: Several minor changes and fixes, such as missing parameter checks.
- IMAP: Added support for retrieving the text and HTML body of a message without downloading the attachments.
- POP3: Initial release of Rebex POP3/SSL for .NET with support for S/MIME and SMTP/SSL and POP3/SSL.
- IMAP: Initial release of Rebex IMAP/SSL for .NET with support for S/MIME and SMTP/SSL and IMAP/SSL.
2006-07-10 Version 1.0.2382.0 #
(build number 2382)
Complete list of changes of version 1.0.2382.0
- SecureSocket: Fixed a bug that caused the connection not to be closed correctly under special circumstances.
- ProxySocket: Fixed a bug that caused the proxy password to be ignored (since build 2305).
- Cryptography: Several new methods and classes added.
- Cryptography: Internal ASN.1 parser replaced by a recent version.
- Cryptography: Fixed a bug in RSA signature format for MD5 and SHA-1.
- MIME: Fixed a bug in RFC 2231 parameter parser that caused the mail message parser to fail in certain circumstances.
- MIME: Priority of messages was reversed when set, it is correct now.
- IMAP: Added support for non-synchronizing literals (LITERAL+ extension).
- IMAP: Search method enhanced to support searching for non-ASCII characters.
- IMAP: Fixed a bug in the message list parser that caused it to fail if ampersand was encountered.
- IMAP: Non-ASCII command arguments are now sent as literals, as required by the RFC.
- IMAP: Default encoding changed to iso-8859-1 which was found to be the most compatible.
2006-06-12 Version 1.0.2354.0 #
(build number 2354)
Complete list of changes of version 1.0.2354.0
- SecureSocket: Fixed a bug that caused the connection not to be closed correctly if the server ignores TLS/SSL close notifications.
- Cryptography: GetSubjectKeyIdentifier method added to Certificate class.
- Cryptography: Added several missing argument checks.
- Cryptography: Certificates other than RSA and DSS now load as well.
- IMAP: Added support for unsolicited CAPABILITY response included in a welcome message.
2006-04-24 Version 1.0.2305.0 #
(build number 2305)
Complete list of changes of version 1.0.2305.0
- SecureSocket: Changes for compatibility with .NET Compact Framework's implementation of System.Net.Sockets.
- MIME: New robust Base64 decoder that can handle a wider range of broken input.
- POP3: Enhanced the message of the exception that is thrown when an authentication using an unsupported method is attempted.
- IMAP: Fixed a bug that caused the client not to work with Courier IMAP.
- IMAP: Enhanced the message of the exception that is thrown when an authentication using an unsupported method is attempted.
- SMTP: Enhanced the message of the exception that is thrown when an authentication using an unsupported method is attempted.
2006-03-02 Version 1.0.2258.0 #
(build number 2258)
Complete list of changes of version 1.0.2258.0
- MIME: Content-Type is now specified in all entities, even if not required by the RFC, to deal with Mozilla Thunderbird's MIME parser.
- SMTP: Waits for all 'RCPT TO' replies prior to sending the 'DATA' command when pipelining is supported and chunking is unsupported, to deal with SMTP servers such as XMail that accept and deliver even an empty mail body.
2006-02-28 Version 1.0.2253.0 #
(build number 2253)
Complete list of changes of version 1.0.2253.0
- Mail: Initial release of Rebex Mail for .NET.
- POP3: Initial release of Rebex POP3 for .NET.
- IMAP: Initial release of Rebex IMAP for .NET.