我有一台只有一个 IP 且运行三台虚拟机的服务器:
http-proxy
- IP 10.77.77.254email
- IP 10.77.77.101services
- IP 10.77.77.104
在主机上,我使用 iptables 选择哪个端口连接到哪个服务器。我已经为email
虚拟机设置了所有电子邮件端口,例如 25、143...。
端口 80 和 443 通向http-proxy
决定哪个域通向哪个虚拟机的端口。我在两个运行的 VMS 上都有 Php、ruby 和 rust 脚本:VMservices
和email
VM。
该email
虚拟机可以作为我的电子邮件服务器(以及更多)正常工作postfix
。courier
它可以很好地发送和接收电子邮件。该服务器上的脚本也php
可以在那里发送和接收电子邮件。虚拟机上还有一些用户帐户email
,其中有他们的电子邮件箱。
我如何在同一主机上设置其他services
虚拟机,以便该虚拟机上的脚本也可以发送电子邮件?
答案1
实际上,虚拟机的答案services
可能是……这取决于情况。如果是应用程序,您可以将它们指向 email:25/TCP。
如果我们谈论守护进程/服务,您可以在services
和http-proxy
VM 中进行配置:
在 exim 中,作为 smarthost
email
一个简单的
postfix
配置为指向email
主机的中继主机。如,在main.cf
:relayhost = email
或者,您可以将轻量级 SMTP 转发器配置为
ssmtp
,仅转发由sendmail
兼容 API 发送的电子邮件。
然后在ssmtp.conf
你定义中:
hostname=FQDN # full DNS name of your server where `ssmtp` is installed
mailhub=email # name or IP address of your central SMTP server
sSMTP - 简单 SMTP
sSMTP 是一个简单的 MTA,用于将邮件从计算机传送到邮件中心(SMTP 服务器)。 sSMTP 简单且轻量级,没有守护进程或任何占用 CPU 的东西;只是 sSMTP。与 Exim4 不同,sSMTP 不接收邮件、扩展别名或管理队列。
答案2
一种解决方案是在计算机上配置修复后空客户端services
。
这样本services
机上的postfix就会将邮件转发到本机上的postfix email
。
如何:
services
1-在机器上安装 postfix :
$ yum install postfix
2- 配置services
机器后缀以将邮件中继到机器email
,如果您使用域名,请保留括号。
编辑:
使用 barckets 可以避免从 dns 查找 MX 记录。
$ postconf -e "relayhost=[email.example.com]"
3- 让机器上的 Postfix 邮件服务器services
仅在环回接口上侦听要传送的电子邮件。
postconf -e "inet_interfaces=loopback-only"
4- 更改空客户端的配置,以便来自 127.0.0.0/8 IPv4 网络和 [::1]/128 IPv6 网络的邮件由本地空客户端转发到中继主机。
$ postconf -e "mynetworks=127.0.0.0/8 [::1]/128"
5- 配置 Postfix,以便将所有外发邮件的发件人域重写为email
计算机域 email.example.com。
postconf -e "myorigin=email.example.com"
编辑:
这里没有括号,因为这只是一个将替换您的services
计算机发件人域名的字符串。
6-重新启动本地 postfix null 客户端。
$ systemctl restart postfix