目前SMTP服务器是一个开放中继

我在CentOS(5.7)上使用Postfix(2.3.3)。 现在,我的服务器似乎像一个开放的中继。 如果我指定一个login,它工作正常,无论是不安全和TLS(但是TLS对我无效的证书,但我想我只需要得到一个证书)。 这就是我想要的,如果一个客户端不支持TLS,那么回退到不安全。

但是,似乎如果我不提供任何login,它仍然会发送电子邮件。

这是我的main.cfconfiguration文件:

command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix myhostname = mail.valdron.ca mydomain = valdron.ca myorigin = $mydomain mydestination = $myhostname, $mydomain unknown_local_recipient_reject_code = 550 mynetworks = 127.0.0.0/8 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.3.3/samples readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES virtual_alias_maps = hash:/etc/postfix/virtual sender_bcc_maps = hash:/etc/postfix/bcc mailbox_command = /usr/bin/procmail-wrapper -o -a $DOMAIN -d $LOGNAME home_mailbox = Maildir/ smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth broken_sasl_auth_clients = yes smtpd_tls_key_file = /etc/pki/tls/private/mail.valdron.ca.key smtpd_tls_cert_file = /etc/pki/tls/certs/mail.valdron.ca.cert smtpd_tls_loglevel = 1 smtpd_tls_session_cache_timeout = 3600s smtpd_tls_session_cache_database = btree:/var/spool/postfix/smtpd_tls_cache tls_random_source = dev:/dev/urandom mailbox_size_limit = 0 notify_classes = bounce, delay, resource smtpd_recipient_restrictions = reject_unauth_destination permit_sasl_authenticated permit_mynetworks check_relay_domains smtpd_tls_security_level = may 

另外,与第一个问题无关,iPhone用户得到以下错误(翻译自法文):“收件人被服务器拒绝,因为中继不被允许”。 我没有一个iPhone来testing。 ISP可以阻止端口25的邮件服务器吗?

尝试将smtpd_recipient_restrictions行更改为:

 smtpd_recipient_restrictions = reject_unauth_destination, permit_sasl_authenticated, permit_mynetworks, check_relay_domains 

我试图查找语法,但我总是使用值之间的值,除非我将值放在单独的行(在这种情况下,下面的参数必须以空格开始),如:

 smtpd_recipient_restrictions = reject_unauth_destination permit_sasl_authenticated permit_mynetworks check_relay_domains 

编辑1
远程testing一台服务器是否真的是一个开放中继的好工具是有益的,只是为了避免错误或“误报”。 这个testing十几种不同的方式来传递,如果其中任何一个工作,会报告给你。 只需在框中input您的IP地址,然后单击“testing”:
http://www.mailradar.com/openrelay/

对于第二个问题,可以通过使用nmap扫描主机来validation端口是否打开,或者只是telnet hostname 25

如果telnet响应220 mailserver_name ESMTP的调谐,则端口是打开的。