To block personal emails on a corporate network, I've blocked FORWARD to mail.google.com and mail.live.com. The following is how iptables resolved those addresses:
$ sudo iptables -L
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Mail-Forward-Block all -- anywhere anywhere
Chain Mail-Forward-Block (2 references)
target prot opt source destination
REJECT all -- anywhere lhr14s24-in-f5.1e100.net reject-with icmp-port-unreachable
REJECT all -- anywhere lhr08s07-in-f5.1e100.net reject-with icmp-port-unreachable
REJECT all -- anywhere origin.du113w.dub113.mail.live.com reject-with icmp-port-unreachable
REJECT all -- anywhere origin.du114w.dub114.mail.live.com reject-with icmp-port-unreachable
nslookup for comparison (192.168.0.10 is Samba running it's internal DNS and forwards lookups to 8.8.8.8):
$ nslookup mail.google.com
Server: 192.168.0.10
Address: 192.168.0.10#53
Non-authoritative answer:
mail.google.com canonical name = googlemail.l.google.com.
Name: googlemail.l.google.com
Address: 216.58.208.69
$ nslookup mail.live.com
Server: 192.168.0.10
Address: 192.168.0.10#53
Non-authoritative answer:
mail.live.com canonical name = dispatch.kahuna.glbdns2.microsoft.com.
Name: dispatch.kahuna.glbdns2.microsoft.com
Address: 157.56.195.156
Name: dispatch.kahuna.glbdns2.microsoft.com
Address: 157.55.235.51
Obviously, that did not block anything. Re-adding the same rules somehow made the iptable's addresses on par with nslookup. But why the difference at all? Can't we make iptable do reverse DNS lookup and check if it matches with those domains?