用外网的sendmail做中继接受邮件到内网2011-10-28 09:46:37
外网服务器比如是https://www.wendangku.net/doc/0b15731957.html,。可以正常接收发到https://www.wendangku.net/doc/0b15731957.html,的邮件。
现在想要把该服务器收到的邮件转到内网的两个服务器里,类似于负载均衡。
内网的两个服务器IP:192.168.10.1,192.168.10.2。
外网服务器设置:
1) /etc/mail/virtusertable文件内容如下:
@https://www.wendangku.net/doc/0b15731957.html, %1@https://www.wendangku.net/doc/0b15731957.html,
把本来收到的邮件统统转到https://www.wendangku.net/doc/0b15731957.html,。
2) /etc/mail/mailertable文件内容如下:
https://www.wendangku.net/doc/0b15731957.html, esmtp:[192.168.10.1],[192.168.10.2]
把发到https://www.wendangku.net/doc/0b15731957.html,的邮件随机转发给内网的两台机器。使用IP地址,需要方括号。
# makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
# makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
# service sendmail restart
说明:
先把收到的邮件改成https://www.wendangku.net/doc/0b15731957.html,的时候,因为不再是本机域名,所以要转发。
而转发时会用到mailertable文件。
mailertable文件里面定义把发到https://www.wendangku.net/doc/0b15731957.html,的邮件转发到内网的两个服务器。
前提:外网服务器的sendmail使用virtusertable和mailertable特征。
内网服务器设置:两台设置是一样的。
1) /etc/mail/local-host-names文件内容如下:
https://www.wendangku.net/doc/0b15731957.html,
只有一行,接受https://www.wendangku.net/doc/0b15731957.html,域的邮件。
2) /etc/mail/virtusertable文件内容如下:
@https://www.wendangku.net/doc/0b15731957.html, root
把所有收到的邮件都当作root用户。 这里应该要根据实际情况自行修改。
# makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
# service sendmail restart
说明:
发到内网的邮件的
所以要根据实际情况把这些邮件分配给实际的用户。
应该和外网修改前的virtusertable文件类似,
除了域名不一样以外,https://www.wendangku.net/doc/0b15731957.html, 变成了https://www.wendangku.net/doc/0b15731957.html,。
设置完成。在发邮件给xxx@https://www.wendangku.net/doc/0b15731957.html,,会按照1:1的比例把邮件转给内网的某个服务器上。
注意:
不要把内网的服务器的网关设置为外网服务器的IP。
否则外网转发邮件时会报错: config error: mail loops back to me (MX problem?)