As mentioned by @prabhat this is indeed a known issue, and it's fixed in the 3.5 release.
The issue only happens if you're sending a quick-test email. This should not be an issue when you're sending emails to actual recipients.
If upgrading to 3.5 is not a solution, you can fix the problem by overriding the Sitecore.Modules.EmailCampaign.Core.Pipelines.GenerateLink.Hyperlink.EncryptQueryString pipeline processor.
You need to add replace the check that looks something like this:
if((uri.Scheme.Equals("http") && uri.Port == 80) || (uri.Scheme.Equals("https") && uri.Port == 443))
{
uri.Port = -1;
}
with something that also checks for mailto and port 25, e.g.
if((uri.Scheme.Equals("http") && uri.Port == 80) || (uri.Scheme.Equals("https") && uri.Port == 443) || (uri.Scheme.Equals("mailto") && uri.Port == 25))
{
uri.Port = -1;
}