配置Postfix以将邮件中继到CentOS 7上的外部SMTP服务器
时间:2020-03-21 11:43:01 来源:igfitidea点击:
使两个Postfix服务器将电子邮件中继到外部SMTP服务器的好处是冗余。
测试环境
我们安装了两个要配置的CentOS 7(最小)服务器,如下所示:
admin1.igi.local(10.11.1.2)将配置为Postfix中继
admin2.igi.local(10.11.1.3)将配置为Postfix中继
两台服务器都将SELinux设置为强制模式。
请参见下图,以确定本文适用的homelab部分。
软件
本文使用的软件:
- CentOS 7
- Postfix 2.10
安装Postfix
请注意,本节适用于两台服务器。
安装Postfix并确保已启用该服务:
# yum install postfix cyrus-sasl-plain # systemctl enable postfix
如果已安装Sendmail,请将其删除:
# yum remove -y sendmail*
允许恶意防火墙流量:
# iptables -A INPUT -s 10.11.1.0/24 -p tcp -m state --state NEW --dport 25 -j ACCEPT
将Postfix服务器配置为中继
请注意,本节适用于两台服务器。
打开“ /etc/postfix/main.cf”进行编辑并配置以下内容:
smtpd_banner = $myhostname ESMTP inet_interfaces = all inet_protocols = ipv4 mynetworks = 127.0.0.0/8, 10.11.1.0/24 relayhost = [mail.example.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_CApath = /etc/ssl/certs smtp_use_tls = yes
创建一个新文件“/etc/postfix/sasl_passwd”并添加外部SMTP服务器的身份验证详细信息:
[mail.example.com]:587 Hyman@theitroad:passwd
禁止非root用户访问:
# chmod 0600 /etc/postfix/sasl_passwd
创建一个数据库文件:
# postmap /etc/postfix/sasl_passwd
检查配置并重新启动Postfix服务:
# postfix check # systemctl restart postfix
在Null客户端上配置Postfix
当我们为Postfix配置其他homelab服务器以通过admin1和admin2中继电子邮件时,我们可以定义一个回退中继(取自Katello服务器上的Postfix配置文件'/etc/postfix/main.cf'):
relayhost = [admin1.igi.local] fallback_relay = [admin2.igi.local]
这以某种方式提供了冗余,因此,如果其中一个SMTP中继发生故障,我们可以通过第二个SMTP电子邮件发送电子邮件。
这是当两个中继都可操作时从我们的Katello服务器获取的示例:
[katello]# echo test|mailx -s TEST Hyman@theitroad
Nov 18 18:09:52 katello postfix/pickup[23067]: 328C73D94: uid=0 from=<root> Nov 18 18:09:52 katello postfix/cleanup[23089]: 328C73D94: message-id=<Hyman@theitroad> Nov 18 18:09:52 katello postfix/qmgr[23068]: 328C73D94: from=<Hyman@theitroad>, size=421, nrcpt=1 (queue active) Nov 18 18:09:52 katello postfix/smtp[23091]: 328C73D94: to=<Hyman@theitroad>, relay=admin1.igi.local[10.11.1.2]:25, delay=0.13, delays=0.04/0.02/0.03/0.03, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 4A557532) Nov 18 18:09:52 katello postfix/qmgr[23068]: 328C73D94: removed
我们看到该电子邮件是通过admin1转发的。
现在,如果admin1服务器已关闭,则电子邮件将通过admin2转发:
Nov 18 18:11:17 katello postfix/pickup[23067]: A81993D96: uid=0 from=<root> Nov 18 18:11:17 katello postfix/cleanup[23089]: A81993D96: message-id=<Hyman@theitroad> Nov 18 18:11:17 katello postfix/qmgr[23068]: A81993D96: from=<Hyman@theitroad>, size=421, nrcpt=1 (queue active) Nov 18 18:11:17 katello postfix/smtp[23091]: connect to admin1.igi.local[10.11.1.2]:25: Connection refused Nov 18 18:11:17 katello postfix/smtp[23091]: A81993D96: to=<Hyman@theitroad>, relay=admin2.igi.local[10.11.1.3]:25, delay=0.2, delays=0.01/0/0.08/0.11, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as C9F614D6) Nov 18 18:11:17 katello postfix/qmgr[23068]: A81993D96: removed