我在运行OpenVPN的EC2实例的Rails中编写了一个公司Intranet站点。 我正在使用类似于Rails指南中所述的Rails的基本电子邮件configuration:
config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :address => "smtp.gmail.com", :port => 587, :domain => 'baci.lindsaar.net', :user_name => '<username>', :password => '<password>', :authentication => 'plain', :enable_starttls_auto => true }
唯一真正的区别是它指向我们的Microsoft Online服务器而不是Gmail。 无论如何,如果我杀了OpenVPN进程,邮件发送罚款。 显然这不是一个好的解决scheme。 我应该如何configurationOpenVPN以允许传出电子邮件?
我是Intranet站点的程序员,而不是configurationOpenVPN的系统pipe理员,所以我有点不确定从哪里开始或检查什么。
这听起来像是一个push redirect-gateway路由问题。
你可以设置你的OpenVPN的选项之一是强制客户端使用OpenVPN服务器作为其默认网关,其实际结果是所有来自客户端的互联网stream量必须穿越OpenVPN并从那里退出到互联网。
这意味着您的VPN客户端的互联网stream量现在受到OpenVPN服务器与互联网对话的影响。
特别是我看到的是,OpenVPNnetworking内部使用专用networking,服务器直接在互联网上; 但是服务器没有任何掩盖客户端源IP的NAT规则。 这意味着要发送到Microsoft Online的数据包具有客户端的OpenVPN IP地址的源IP,这意味着Microsoft Online无法将应答数据包发回给您。
当您的OpenVPN客户端处于活动状态时,您可以使用traceroute来检查。 运行一个命令,如:
traceroute -n smtp.gmail.com
…并查看下一跳IP地址是什么。 如果是你的OpenVPN服务器,你有push redirect-gateway选项集。
或者,如果您的OpenVPN服务器位于防火墙之后,请检查防火墙的规则,以明确阻止(或不允许,取决于您的防火墙风格)连接到目标端口。
您也可以尝试远程login到您尝试访问的目标端口; 在你的例子中:
telnet smtp.gmail.com 587
…有时你从中得到的错误可以告诉你防火墙在连接尝试中做了什么。