在RHEL 7上配置Postfix以将所有电子邮件转发到中央邮件服务器
在RHEL 7上,Postfix用作邮件服务。
我们将在空客户端上部署Postfix。
空客户端是只能发送邮件的计算机。
它不会从网络接收任何邮件,并且不会在本地传递任何邮件。
我们在本文中使用RHEL 7.0虚拟机。
如果我们需要将Postfix配置为网关,请检查此帖子。
在Null客户端上配置Postfix
postfix软件包应默认安装,否则请执行以下操作:
# yum install -y postfix
确保在启动时启用该服务:
# systemctl enable postfix
现在,我看到一些人添加了防火墙规则,以允许smtp服务的传入流量。
这对于中央SMTP服务器通常是必需的,但是在谈论空客户端时几乎没有意义。
空客户端无法接收来自外部的电子邮件,因此不需要防火墙配置。
对于设置可以将电子邮件转发到中央邮件服务器的环境而言,只有几个参数很重要。
该文件有很多Postfix配置示例:
# less /usr/share/doc/postfix-2.10.1/README_FILES/STANDARD_CONFIGURATION_README
检查“空客户端上的Postfix”部分以获取更多信息。
打开文件“ /etc/postfix/main.cf”进行编辑,然后添加以下内容:
myhostname = srv1.rhce.local mydomain = rhce.local myorigin = $mydomain relayhost = [10.8.8.70] inet_interfaces = loopback-only mydestination = mynetworks = 127.0.0.0/8 [::1]/128 local_transport = error: local delivery disabled
如果在某些远程目标不可访问时将其关闭,则中继主机可以防止邮件卡在空客户端上。
仅环回指示不接受来自网络的邮件。
仅来自
空客户端将127.0.0.0/8网络和[:: 1]/128网络转发到中继主机。
我们通过放置local_transport参数来防止本地null客户端将任何邮件分类到邮箱中。
我们还通过不指定mydestination来禁用本地邮件传递。
所有邮件都按照Relayhost中的指定去往邮件服务器。
请注意,我们还可以为中继主机使用DNS名称,以及通过将记录放在方括号中来关闭MX查找。
检查语法错误:
# postfix check
重新启动服务:
# systemctl restart postfix
向根用户发送测试电子邮件:
# echo test | mailx -s Test root
检查'/var/log/maillog':
postfix/pickup[2636]: 3DF9920832: uid=0 from=<root> postfix/cleanup[2668]: 3DF9920832: message-id=<Hyman@theitroad> postfix/qmgr[2637]: 3DF9920832: from=<Hyman@theitroad>, size=416, nrcpt=1 (queue active) postfix/smtp[2670]: 3DF9920832: to=<Hyman@theitroad>, orig_to=<root>, relay=10.8.8.70[10.8.8.70]:25, delay=0.36, delays=0.3/0/0/0.05, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 5794EC3287) postfix/qmgr[2637]: 3DF9920832: removed
将Postfix配置为域的中央邮件服务器
为了测试电子邮件的传递,我们可以使用一段时间前设置的FreeIPA服务器,并将其配置为rhce.local域的中央邮件服务器。
以下“ /etc/postfix/main.cf”配置可以完成此工作:
myhostname = ipa.rhce.local mydomain = rhce.local myorigin = rhce.local inet_interfaces = all inet_protocols = ipv4 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydestination参数指定服务器认为自己是最终目的地的域的列表。
配置防火墙并重新启动Postfix服务:
# firewall-cmd --add-service=smtp --permanent # firewall-cmd --reload
有用的是,我们可以使用postsuper从电子邮件队列中删除所有消息:
# postsuper -d ALL