Postfix SMTP 服务器无需身份验证即可发送电子邮件

Postfix SMTP 服务器无需身份验证即可发送电子邮件

我在 CentOS (5.7) 上使用 Postfix (2.3.3)。现在,我的服务器似乎表现得像一个开放中继。如果我指定登录名,它工作正常,无论是非安全还是使用 TLS(然而 TLS 会提醒我证书无效,但我想我必须获得证书)。这就是我想要的,如果客户端不支持 TLS,则回退到非安全模式。

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

这是我的 main.cf 配置文件:

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 可以测试。ISP 是否可能像许多 ISP 一样阻止了端口 25 邮件服务器?

答案1

尝试将 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
有一个不错的工具可以远程测试服务器是否真的是开放中继,使用它可以避免错误或“误报”。这个工具可以测试十几种不同的中继方式,如果其中任何一种有效,它都会向您报告。只需在框中输入您的 IP 地址,然后单击“测试”即可:
http://www.mailradar.com/openrelay/

答案2

nmap对于第二个问题,您可以使用扫描主机来验证端口是否打开,或者简单地telnet hostname 25

如果 telnet 响应类似于的内容220 mailserver_name ESMTP,则端口是开放的。

相关内容