Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Latest Version Issues #27

Closed
networkthinking opened this issue Mar 20, 2014 · 25 comments
Closed

Latest Version Issues #27

networkthinking opened this issue Mar 20, 2014 · 25 comments
Labels

Comments

@networkthinking
Copy link

Hello,
I downloaded the latest version and it was not signing my email. I checked eventlog and found this below. I decided to roll-back to an older version and it worked fine.

Let me know if you need anything. Not sure how to check what version I installed but if you tell me how, I will check. The older version made me choose the version of Exchange.

The description for Event ID 0 from source Exchange DKIM cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.

If the event originated on another computer, the display information had to be saved with the event.

The following information was included with the event:

Signing a mail item according to DKIM failed with an exception. Check the logged exception for details.
System.FormatException: The specified string is not in the form required for an e-mail address.
at System.Net.Mail.MailAddress.ParseValue(String address)
at System.Net.Mail.MailAddress..ctor(String address, String displayName, Encoding displayNameEncoding)
at Exchange.DkimSigner.DefaultDkimSigner.CanSign(Stream inputStream)
at Exchange.DkimSigner.DkimSigningRoutingAgent.SignMailItem(MailItem mailItem)
at Exchange.DkimSigner.DkimSigningRoutingAgent.WhenMessageCategorized(CategorizedMessageEventSource source, QueuedMessageEventArgs e)

the message resource is present but the message is not found in the string/message table

@AlexLaroche
Copy link
Collaborator

The problem is with the MailAddress class. I saw the problem with a non conventionnal email addresss when I implemented DKIM relaxed canonicalization.

MSDN documention : MailAddress Constructor (Exception FormatException) =>
http://msdn.microsoft.com/en-us/library/591bk9e8%28v=vs.110%29.aspx

By example, this address will generate a exception: check-auth-jsmith=yourdomain.com@verifier.port25.com.

I was thinking that the email address don't respect the rfc.

@networkthinking
Copy link
Author

That is interesting. I was sending from joe_smith@xxmanagement.com. Is the underscore the problem?

@AlexLaroche
Copy link
Collaborator

You should use the version 1.5.2 for the moment, the problem have been added with RecipientRule and SenderRule support.

I need to make the test to check if the problem is the underscore in the email address... but it's a interesting case to try.

@networkthinking
Copy link
Author

I will try to reload the new version tonight and test again with a non underscore email address.

@AlexLaroche
Copy link
Collaborator

Sorry, I didn't receive any error with the email address test_test@rhezo.com. With version of the Dkim Signer, are you using? With version of Exchange server?

But if a try to send to auth-jsmith=yourdomain.com@rhezo.com...

Signing a mail item according to DKIM failed with an exception. Check the logged exception for details.
System.FormatException: La chaîne spécifiée n'est pas de la forme requise pour une adresse de messagerie.
à System.Net.Mime.MailBnfHelper.ReadMailAddress(String data, Int32& offset, String& displayName)
à System.Net.Mail.MailAddress.ParseValue(String address)
à System.Net.Mail.MailAddress..ctor(String address, String displayName, Encoding displayNameEncoding)
à Exchange.DkimSigner.DefaultDkimSigner.CanSign(Stream inputStream)
à Exchange.DkimSigner.DkimSigningRoutingAgent.SignMailItem(MailItem mailItem)
à Exchange.DkimSigner.DkimSigningRoutingAgent.WhenMessageCategorized(CategorizedMessageEventSource source, QueuedMessageEventArgs e)

@AlexLaroche
Copy link
Collaborator

@Pro Why the .pdb file are no more locate in the release folder of each DKIM Signer version (Exchange 2007, 2010, 2013)?

@AlexLaroche
Copy link
Collaborator

@networkthinking Can you said me what is the email address of your recipient? The problem isn't with the sending email address.

@networkthinking
Copy link
Author

wally.hass@gmail.com

@Pro
Copy link
Owner

Pro commented Mar 20, 2014

@AlexLaroche I just added the .pdb files (they were never there :) )
@networkthinking I uploaded a new version which has a fallback and doesn't throw an exception, if the email address is invalid. Can you please try the new version and post the error message.
To install it copy the .dll AND .pdb to your server (the .pdb gives more debug infos).

@Pro
Copy link
Owner

Pro commented Mar 20, 2014

@networkthinking Btw: you can check the version by Right click on the .dll -> Properties -> Details -> File Version

@networkthinking
Copy link
Author

1.5.2.0 from 1/18 is working fine

Should I just download from the home page or someplace special?

@AlexLaroche
Copy link
Collaborator

Work for me... The exception is catch a new entry is created in the eventlog.

Couldn't parse to address: ' "auth-jsmith=yourdomain.com@test.local" <auth-jsmith=yourdomain.com@test.local> Ignoring recipient rule

But the email no more signed... By default, the email was signed before the rules was implemented. Is this is the desired behavior?

@Pro
Copy link
Owner

Pro commented Mar 20, 2014

@AlexLaroche indeed, that's not correct. It should sign. Just fixed the signing. Is this exactly the error message which you got? Because it seems there's the closing ' missing? The E-Mail adress is then "auth-jsmith=yourdomain.com@test.local" <auth-jsmith=yourdomain.com@test.local> including the newline?
Can you debug into the code and check if there's a newline.

@networkthinking You can take the current master branch: https://github.com/Pro/dkim-exchange/archive/master.zip

@Pro
Copy link
Owner

Pro commented Mar 20, 2014

@AlexLaroche I just wrote a short app to validate the function of MailAddress. It parses the mail address above just fine... Can you tell me the exact charaters which cause MailAddress to fail?

@Pro Pro added the bug label Mar 20, 2014
@Pro Pro added this to the 1.8.3 milestone Mar 20, 2014
@AlexLaroche
Copy link
Collaborator

May be, I remove some characters bu error when I pass the error message from eventlog. I remove some text before "Ignoring recipient rule" because it wasn't in English for sure.

The bad char is "=". The recipient email address is "auth-jsmith=yourdomain.com@test.local". I didn't not have time now to test your modification. I will try to get some time tonight...

@Pro
Copy link
Owner

Pro commented Mar 20, 2014

@AlexLaroche Please post error messages by using backticks: http://superuser.com/questions/254076/how-do-i-type-the-tick-and-backtick-characters-on-windows and https://help.github.com/articles/github-flavored-markdown#syntax-highlighting
This makes sure the message is posted without missing chars

Also this email address works fine, I used the following console app to validate it:

string addr = "auth-jsmith=yourdomain.com@test.local";
MailAddress a = null;
try
{
    a = new MailAddress(addr);
}
catch (System.FormatException ex)
{
    Console.WriteLine(ex.Message);
}
if (a != null)
{
    Console.WriteLine("OK: " + a.User + "@" + a.Host);
}
Console.ReadKey();

@AlexLaroche
Copy link
Collaborator

screenshot
screenshot2
screenshot3

@AlexLaroche
Copy link
Collaborator

exchange_eventlog

@AlexLaroche
Copy link
Collaborator

I am oblige to confirm that your code work in .net 4.5.1. I will try with .net 3.5...

@Pro
Copy link
Owner

Pro commented Mar 20, 2014

I just tested
\"auth-jsmith=yourdomain.com@test.local\"\r\n\t<auth-jsmith=yourdomain.com@test.local>\r\n
Result: in .NET 4.5 it works, but 3.5 there's the exact same exception.
So this is related to 3.5 (Exchange 2007 & 2010)

@AlexLaroche
Copy link
Collaborator

Same result! This is a very interesting problem... :)

@Pro
Copy link
Owner

Pro commented Mar 20, 2014

The problem for .NET 3.5 is the newline between the first (name) part and the second (address). If I replace it with space, also .NET 3.5 recognizes it correctly.

@AlexLaroche
Copy link
Collaborator

We should look the two MailAddress class difference between .net 3.5 and .net 4.5 to be sure to avoid any others problems...

Here the source code for 4.5.1 : http://referencesource.microsoft.com/#System/net/System/Net/mail/MailAddress.cs#b23cf10c5d2b82f1

@Pro
Copy link
Owner

Pro commented Mar 20, 2014

QuickFix (for now): a1a145b

@Pro
Copy link
Owner

Pro commented Mar 20, 2014

@networkthinking You can use version 1.8.3 now: https://github.com/Pro/dkim-exchange/releases/tag/v1.8.3

@AlexLaroche if you find the source code for 3.5 we can look for differences, but please create a new Issue for that. Thanks for your help!!

@Pro Pro closed this as completed Mar 20, 2014
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants