Many people complain about email. Often about very different aspects. I focus on the technical aspects here. There are some clear improvements on the protocol level.
Pull instead of Push
There is the Internet Mail 2000 proposal by D.J.Bernstein, which already makes this point. The sending server should stores the message until the receiving server pulls it. The SMTP protocol pushes messages into other servers instead, just like it is done with paper mail. The sender only notifies the recipient to fetch one or more messages.
This simplifies the server, because it makes the complex business of bouncing emails without losing them unnecessary. It also makes spam more costly for the sender, because recipients can simply ignore notifications from known spam-senders and are not burdened with bouncing the messages.
Linked Attachments
Attachments are a costly thing. Various quotas make people use websites for big files instead.
Emails with attachments are currently implemented via mime-multipart. My idea is make this tree structure of emails visible to the server. So if you send an attachment to many people it is only stored once (per server). The messages for different people just link to the file.
Mandatory Encryption and Authentification
While we are at it, let's bake encryption and authentification right into the protocol. Digital signatures are technically better than a handwritten signature, yet handwriting is often preferred. This technology is definitely underused, because it is inconvenient. Mail protocols should make it more accessible.
A tricky part is to hide meta data. Maybe we can find a way to send messages from A to B without anybody seeing "A" or "B"? However, this is quite far-fetched. Reliability is more important.