Forwarding Pitfalls

Or, Forwarding Considered Harmful

Overview

Many Lab members regularly forward their mail, and read it at some other address than the one they usually give out. This has been a standard and routine practice since the early days of email, but it’s becoming increasingly unreliable, and we wanted to call the community’s attention to some pitfalls with forwarding (especially, but not exclusively, with forwarding to Gmail).

On the modern internet, email delivery is a constantly escalating arms race among spammers and scammers (and sometimes spies), legitimate email senders, and email providers. Email reliability overall is going down, and that’s especially the case for forwarded email, and even more so for mail forwarded to Gmail.

Moreover, when mail is forwarded to Gmail, if Google doesn’t accept it, or accepts it and doesn’t deliver it, the fact that Google’s decisions about delivering mail are largely dynamic and automated means that often nobody (not even Google engineers) can determine why Google did not deliver a message.

See also


By far, the best practice for email is to give out the email address where you actually read your mail, so that if that’s Gmail, people are sending mail directly to your Gmail address; if it’s IS&T’s Exchange infrastructure, people are sending mail directly to your @mit.edu address; if it’s your CSAIL IMAP account, people are sending mail directly to your @csail.mit.edu address, and so on.

Forwarding can be a useful tool when changing email addresses, or so that old published addresses don’t just stop working completely, but in our opinion it’s not reliable enough to substitute for telling your correspondents what the actual email address is where you read your mail.

Forwarding within CSAIL can also be very useful for various reasons (and is generally much more reliable than forwarding from a CSAIL address to a non-CSAIL address, at least assuming the destination CSAIL address doesn’t itself forward outside of CSAIL). For instance, forwarding mysoftware-bugs@csail.mit.edu to me@csail.mit.edu, assuming you read your mail on CSAIL’s IMAP server and don’t forward it elsewhere, should be almost as reliable as if the mysoftware-bugs alias weren’t involved.


Specific pitfalls when forwarding to Gmail

(It’s worth noting that Google and Microsoft between them handle a massive fraction of the email traffic of North America and Western Europe, and Google handles so much personal, non-business-related mail, that for any two people in the US sending email to each other there’s a good likelihood the email never needs to leave Google.)


General pitfalls with email forwarding

In addition to some specific pitfalls of forwarding to Gmail, there are a bunch of general problems with forwarding, of varying degrees of severity:


Some concrete examples

These are fictionalized examples, but based on real problems TIG sysadmins have seen with mail delivery. We may add to this list as we run across new examples.

  1. You’re working on buying a house. You give out your CSAIL email address, which forwards to your Gmail account. Eventually it’s time for you to sign the contract, so the seller’s attorney sends you the contract as a large PDF, making the message almost (but not quite) 25MB large. You forward it to your lawyer for review and advice. Your lawyer replies, quoting the contract, but the lawyer’s reply plus the long legalese disclaimer at the bottom of your lawyer’s message causes the reply to be over 25MB, so Gmail doesn’ accept it at 3pm on a Friday. Since you expected a nearly immediate response, you ask your lawyer about it at 4:30. Your lawyer replies to the effect of “I already sent you all that” and quotes her original 3pm reply — again, of course, making the message larger than 25MB so Gmail won’t accept it.
  2. You give your @mit.edu address to your bank. Your @mit.edu address forwards to your @csail.mit.edu address, which forwards to Gmail. Your bank publishes information in DNS saying “don’t accept mail claiming to be from us unless it comes from one of our email servers or is cryptographically signed by us”, which is normally not a problem, but in some mysterious circumstances Microsoft Exchange can break those cryptographic signatures. Since Google knows this and (we’re guessing) has backchannels with Microsoft since they both handle so much mail, the broken signature might not be a problem if the message were forwarded directly from Microsoft to Gmail, but when it’s forwarded through CSAIL Google isn’t expecting broken signatures and refuses it. Due to some slightly unusual address rewriting MIT’s Exchange-based email infrastructure does (intended to work around other forwarding problems), the bounce message does not go to the bank, so they have no way of knowing you didn’t get the message. And since you get lots of bounce messages (mostly of forwarded spam) and usually delete them, you’re likely to miss the bounce message when it goes to you instead — and that’s even if Gmail doesn’t decide on its own that the bounce is likely to be spam and hide it.
  3. You run your own mail server on its own custom domain in our OpenStack cluster and give out that address because it’s short and memorable. You forward from that server to your CSAIL address. In addition to handling incoming mail, you run a bunch of cron jobs on that server. A routine security upgrade requires manual intervention to replace a deprecated feature in your email-server configuration, so your mail system breaks. All the cron jobs sending output to the broken mail system (including the cron jobs you set up to tell you if anything is wrong on the server) cause the server’s virtual root drive to fill up. You don’t notice this for several days, when a piece of mail you’re expecting doesn’t show up. By that point, it’s been so long that some of the servers trying to send you mail have given up.
  4. You forward your CSAIL email address to your Gmail address, and you ask a colleague to send you a small dataset to your CSAIL email address. Your colleague knows the tarfile is pretty large for email, but also knows they’ve been able to send it to CSAIL addresses in the past, since it’s only 35MB, so they send it to you and don’t expect problems. But since you forward to Gmail and Gmail refuses messages larger than 25MB, the file does not get delivered. For mysterious reasons known only to Gmail, the message was deferred for about half an hour before Gmail finally refused it, and the sender gets a lot of bounce messages, so they don’t click through when they get the bounce message and don’t notice the dataset didn’t get through. If you’d have asked the sender to send directly to your Gmail address, they’d have been alert to the likelihood of problems and the bounce message might have arrived more quickly and been obviously a bounce to their email to you.