公司机器都是内网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