后缀打开中继。 如何configuration,所以它不是?

我已经设置了Postfix,但是在安装过程中遇到了麻烦。

每当我用电子邮件发送到服务器,它拒绝我的邮件说'中继拒绝',所以我在main.cf改变了以下内容:

 mynetworks = 0.0.0.0/0 mynetworks_style = subnet 

我现在可以发送电子邮件,它的工作原理,但MXtesting说,这是一个开放的中继(显然是无意的)。

我该如何解决这个问题? 我显然希望有人能够给我的域名发送电子邮件,但我不确定configuration。

我知道我可以更改mynetworks ,但是这不会限制谁可以通过电子邮件发送到服务器?

我的networking只能包含可以使用服务器将邮件转发到其他域的可信用户 – 否则,就像你发现的那样,这是一个开放的中继。 如果在内部networking上使用RFC 1918地址,您可能需要将其设置为192.168.0.0/16,10/8或172.16.0.0/12。

控制用户是否可以向您的服务器发送邮件的设置包括mydestination和virtual_mailbox_domains – 在此处或在此处阅读文档。

打开你的问题是

 mynetworks = 0.0.0.0/0 

导致在你下面的某个地方可能有它列出

 smtpd_recipient_restrictions = ... permit_mynetworks ... 

如果你需要能够从任何IP发送电子邮件,那么你只是看启用一个用户/密码发送电子邮件,这是常见的sasl

http://www.postfix.org/postconf.5.html#mynetworks所logging:

mynetworks(默认:参见“postconf -d”输出)
具有比“陌生人”更多特权的“受信任”远程SMTP客户端的列表。

特别是,“可信”的SMTP客户端可以通过Postfix中继邮件。
请参阅postconf(5)手册中的smtpd_recipient_restrictions参数说明。

请仅使用validationip: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