公司机器都是内网ip,除特殊需要外,均无外网ip,但是有的内网机器上运行的应用需要调用本机的sendmail来发送邮件,无外网又发送不了,sendmail的relay功能就可以解决这个问题。 我们
公司机器都是内网ip,除特殊需要外,均无外网ip,但是有的内网机器上运行的应用需要调用本机的sendmail来发送邮件,无外网又发送不了,sendmail的relay功能就可以解决这个问题。
我们需要一台具有外网权限的机器设置为server,其他需要发送邮件的内网机器均指向这台机器即可,量小的话,不需要单独一台具有外网ip的机器,放在线上具有外网权限的一台机器即可
假如192.168.1.1能够访问外网
192.168.1.2 无外网权限
Mail relay
server:
192.168.1.1
localhost
software:
sendmail
operation: linux
(1) 192.168.1.2(client)设置转发:
vim /etc/mail/sendmail.cf
DSmailserver
或者直接使用ip (注意中括号)
DS[192.168.1.1]
然后添加hosts (/etc/hosts)
192.168.1.1 mailserver
同时需要添加本地hostname加一个点(.)的host, 如
127.0.0.1 mailclient mailclient. localhost.localdomain localhost
此处必须使用hosts, ip则显示 host not found.
(2) 192.168.1.1 上允许接收本地转发
首先修改sendmail监听地址
vim /etc/mail/sendmail.cf
O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA #加上下面这行
O DaemonPortOptions=Port=smtp,Addr=192.168.1.1, Name=MTA
然后设置访问权限
cd /etc/mail
vim access
your.ip RELAY # 前面填本地的ip
makemap hash access.db < access
(3) 192.168.1.1及192.168.1.2分别重启sendmail
/etc/init.d/sendmail restart
test:
mail -s "test mail" xxxxx@xxx.com
另外, 让sendmail使用本地host解析:
hosts files
aliases files
local-host-names