如何直接隔离Google Gmail SMTP服务器IP?

我正在执行一些VPN中的自定义路由,要求我将每个Google Gmail SMTP服务器IP添加到路由表中,以便它们通过另一个网关,而不是VPN的默认网关。

按照这个 ,我可以确定谷歌的通用地址范围,但是我似乎无法直接隔离SMTP服务器。 奇怪的是,我一度向一家VPN公司询问,他们回复了所有特定的Gmail SMTP服务器,但没有,也没有解释如何确定这些IP地址。

我如何通过shell咒语来隔离这些IP地址? 一个标准的GNU Linux或者OS X方法对此可以很好。

请testing这是一个很好的,正弦这只是一个问答WAG,但我相信这是你想要的:

 dig @8.8.8.8 +short _spf.google.com TXT \ |awk ' BEGIN {RS=" " ; FS=":"} ; $1="include" {print $2} ' \ |sed -e '/^\s*$/d' \ |while read NETBLOCK ; do dig @8.8.8.8 +short "${NETBLOCK}" TXT \ |awk ' BEGIN {RS=" " ; FS=":"} ; $1 ~ /^ip4/ {print $2} ; $1 ~ /^ip6/ {s = ""; for (i = 2; i <= NF; i++) s = s":"$i; print s } ' \ |sed -e 's/^://' ; done 

请注意,Google将大部分公共分配都放入SPFlogging中。 这是有道理的,因为它允许他们灵活地添加/删除/移动/更改他们的出站邮件网关,但可能不如问题作者想要的粒度。

您只需要为MXlogging进行DNS查找即可。 这会给你(在那个时候)一个Gmail用来接收邮件的所有服务器的列表。

  • 出站服务器可以使用@DTK的答案find
  • 入站服务器可以使用@Rex'answer来find

两个答案是正确的,但不完整。 以下每个答案只能为您提供在特定时间点的服务器。 甚至一周后,服务器可能会完全不同,因为Google经常更换服务器。

真正的解决scheme根本不用担心Google的服务器。 让一个邮件服务器为你做这个工作。 (这是他们打算做的。)把一个智能主机在“这个”networking中转邮件。 通过隧道将Google邮件(*@gmail.com,*@googlemail.com,…)通过隧道传递给VPN后面的“该networking”上的另一个智能主机。 “那个”智能主机是它的工作,并解决了谷歌的域的MX,并提供邮件给谷歌。

在这个configuration中,“这个”智能主机只需要知道,所有的谷歌的邮件应该先去“那个”智能主机。 两个服务器之间的networkingstream量都被隧道传输(可能是防火墙),并且是端口25上的唯一连接。(因为两者都是“你的”服务器,他们甚至可以通过任何你想要的端口进行通信)。

所以你只需要configuration任何客户端使用“这个”smarthost邮件传递。

这可以通过Postfix轻松完成(请参阅relay_domains和transport_maps作为开始)。 我可以为您提供一个工作的configuration(VPN的东西除外)。