我已经设置了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