![带有后缀的 smtp 身份验证被拒绝,并出现错误“需要完全限定的主机名”](https://linux22.com/image/575010/%E5%B8%A6%E6%9C%89%E5%90%8E%E7%BC%80%E7%9A%84%20smtp%20%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E8%A2%AB%E6%8B%92%E7%BB%9D%EF%BC%8C%E5%B9%B6%E5%87%BA%E7%8E%B0%E9%94%99%E8%AF%AF%E2%80%9C%E9%9C%80%E8%A6%81%E5%AE%8C%E5%85%A8%E9%99%90%E5%AE%9A%E7%9A%84%E4%B8%BB%E6%9C%BA%E5%90%8D%E2%80%9D.png)
我在 debian squeeze 上由 postfix + dovecot + roundcube 组成的邮件服务器遇到了一些问题。
从 roundcube 发送和接收邮件非常顺利。但我无法从 Outlook 等外部客户端发送邮件。我仍然可以完美地从 POP3 或 IMAP 读取邮件。我总是遇到同样的错误,但我在互联网上找不到解决方案:
client.hostname: Helo command rejected: need fully-qualified hostname; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=client.hostname
这是我的 postfix 的 main.cf:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
delay_warning_time = 1h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = coruscant.kilkoa.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
#mydestination = mail.kilkoa.com, 9274hd61061, localhost.localdomain, localhost
#relayhost =
mynetworks = 213.246.61.0/24 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_mailbox_base = /home/mailer
virtual_transport = dovecot
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
dovecot_destination_recipient_limit = 1
有人知道吗?
答案1
在 SMTP 事务中,当有人向您发送邮件时,对话从试图向您发送邮件的人开始,说如下内容:
HELO rmotehostname.domain.com
您收到的错误:
: Helo command rejected: need fully-qualified hostname; from= to= proto=ESMTP helo=
表示他们发送的主机名不是完全合格的主机名。因此,他们不会发送“remotehostname.domain.com”之类的内容,而是只发送“remotehostname”。您拒绝此操作是因为您reject_non_fqdn_hostname
在 中明确设置了smtpd_recipient_restrictions
。