我已经设置了 Postfix,但是在设置时遇到了问题。
每当我向服务器发送电子邮件时,它都会拒绝我的邮件并说“拒绝中继”,因此我更改了以下内容main.cf
:
mynetworks = 0.0.0.0/0
mynetworks_style = subnet
我现在可以发送电子邮件并且它可以正常工作,但是 MX 测试表明它是一个开放中继(显然是非预期的)。
我该如何解决这个问题?我当然希望任何人都能给我的域名发送电子邮件,但我不确定该如何配置。
我知道我可以更改mynetworks
,但是这不会限制谁可以向服务器发送电子邮件吗?
答案1
让你面临的问题是
mynetworks = 0.0.0.0/0
因为下面某处你可能已经列出了它
smtpd_recipient_restrictions = ... permit_mynetworks ...
如果你需要能够从任何 IP 发送电子邮件,那么你只需启用用户/密码来发送电子邮件,最常见的是 sasl
答案2
答案3
记录于http://www.postfix.org/postconf.5.html#mynetworks:
mynetworks(默认:参见“postconf -d”输出)
比“陌生人”拥有更多权限的“受信任”远程 SMTP 客户端列表。特别是,“受信任的” SMTP 客户端被允许通过 Postfix 中继邮件。
请参阅 postconf(5) 手册中的 smtpd_recipient_restrictions 参数描述。
答案4
仅对您的 IP 使用身份验证:main.cf
smtpd_recipient_restrictions =
permit_mynetworks
reject_unauth_destination
使用文件来存储你的ip main.cf:
mynetworks = hash:/etc/postfix/network_table
如果发生改变,使用脚本来更新你的 IP(在 cron 中运行)
#!/bin/bash
###
## sh /sx_sys/postfix_mynetwork_ip_checker.sh
LOGFILE="/var/log/smtp_relay.log"
curent_ip=$(dig @exemple.com exemple.com | awk '/^;; ANSWER SECTION:$/ { getline ; print $5 }')
#echo $curent_ip
saved_ip=$(</etc/postfix/network_table )
#echo $saved_ip
if [ "$curent_ip OK" != "$saved_ip" && -n "$curent_ip"]; then
echo "$curent_ip OK" > "/etc/postfix/network_table"
postmap /etc/postfix/network_table
echo "$(date) smtp allow for $curent_ip" >> $LOGFILE 2>&1
mail -s "smtp allow for $curent_ip $(date)" [email protected] < /dev/null
fi
exit 0